【负载均衡】1.负载均衡介绍

部分内容来自: https://www.cnblogs.com/lizhaoxian/p/11479335.html

        https://www.cnblogs.com/zhaiyf/p/9051694.html

一、概述

1、介绍:负载均衡集群,Load Balance 集群,是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端提供服务的一种方式。

2、出现背景:随着业务增加,流量增大,高并发,服务器承受的压力越来越大,为了解决这个问题,其一是单台服务器扩容,比如增加CPU,内存,换用高性能的磁盘,但这个过程很复杂,并且花费巨大,会影响现有业务,其二是负载均衡集群,后端节点添加删除对用户完全透明。

3、意义:扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

4、常用软硬件

常见的负载均衡硬件:F5,深信服,思科,梭子鱼,Netscaler等(花钱但稳定,并且有专业技术支持,独立于系统)
常见的负载均衡软件:Lvs,nginx,haproxy,Piranha,heartbeat等。(依赖于系统,增加系统开销,但配置简单,操作灵活。 ngnix和haproxy是七层负载均衡,LVS是四层负载均衡)
 

二、四层负载均衡与七层负载均衡

负载均衡有两层,三层,四层,七层。常见的为四层和七层。某次用户访问是与服务端建立连接后交换数据包实现的,如果在第三层网络层做负载均衡,那么将失去「连接」的语义。软负载面向的对象应该是一个已经建立连接的用户,而不是一个孤零零的 IP 包。
 
四层的负载均衡就是基于IP+端口的负载均衡,即主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式(算法),决定最终选择的内部服务器。
七层的负载均衡就是基于虚拟的URL或主机IP的负载均衡,即主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
优缺点对比:四层性能好,七层可配置多,可根据报文内容进行转发。
 
简单的理解一下软件负载均衡。
①.所谓分层的负载均衡,都是以网络的模型来说的。四层就是基于IP和端口的负载均衡,七层就是基于URL等应用信息的负载均衡。所以简单的说四层负载均衡就是通过IP和端口接收请求再分发至真实的服务器,七层是通过URL或主机名接收请求,然后分发至真实的服务器。
②.七层的实现也是在四层的基础上是实现的,没有四层就不可能有七层。在第七层上可以做许多事情,比如可以根据七层的浏览器类别区分是手机还是PC,将WEB服务器分为2组,手机登陆专门的移动端网站。
③.对客户端来说,客户端好像是访问的同一台主机。其实为了有更好的用户体验,从智能DNS入手,根据客户端IP来源将域名解析到距离客户端最近的一台服务器或者访问最快速的一台服务器,但这些内容客户端都是感觉不到的,客户端感觉到的只能是访问网站很快。
 

三、三种常用开源软件负载均衡器的特点

1、LVS

1. 首先它是基于4层的网络协议的,抗负载能力强,对于服务器的硬件要求除了网卡外,其他没有太多要求;
2. 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,大大减少了人为出错的几率;
3. 应用范围比较广,不仅仅对web服务做负载均衡,还可以对其他应用(如mysql)做负载均衡;
4. LVS架构中存在一个虚拟IP的概念,需要向IDC多申请一个IP来做虚拟IP。

2、Nginx负载均衡器

1. 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2. Nginx安装和配置比较简单,测试起来比较方便;
3. 也可以承担高的负载压力且稳定,一般能支撑超过上万次的并发;
4. Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
5. Nginx对请求的异步处理可以帮助节点服务器减轻负载;
6. Nginx能支持http和Email,这样就在适用范围上面小很多;
7. 默认有三种调度算法: 轮询、weight以及ip_hash(可以解决会话保持的问题),还可以支持第三方的fair和url_hash等调度算法;

3、HAProxy

1. HAProxy是工作在网络7层之上;
2. 支持Session的保持,Cookie的引导等;
3. 支持url检测后端的服务器出问题的检测会有很好的帮助;
4. 支持的负载均衡算法:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash);
5. 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度;
6. HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
 
posted @ 2020-02-26 20:39  _幸会  阅读(324)  评论(0编辑  收藏  举报