一、集群架构

随着互联网的发展,服务端请求量越来越大,服务器负载压力越来越大。另外,如果采用单点服务器对外提供服务,当单点服务器故障时,整个网络服务将瘫痪。集群架构因此出现,将成千上万台服务器有机的集合在一起共同提供服务。

实现方式

基于硬件:

F5的BIG-IP、radware的AppDirector。

基于软件:

OSI四层的LVS,OSI七层的Nginx,以及HAproxy

集群核心

负载均衡、高可用

二、LVS负载均衡集群

客户端从外部访问公司的负载均衡服务器时,客户端的web请求会根据LVS调度器预设的算法,将该请求转发给后端的服务器。如果后端服务器连接的是相同的存储,客户得到的结果是一样的,后端服务器根据不同的工作方式将结果反馈给客户端。

三、LVS工作方式

NAT模式

NAT模式:网络地址映射,转换网络地址。

优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址

缺点:用户请求和响应报文都必须经过dr地址重写,当用户请求越来越多时,调度器的处理能力将成为瓶颈。

原理:

1.Director收到用户的请求后,发现源地址为CIP请求的目标地址为VIP(eth0) 2.Director 会认为这个请求的是一个集群服务,设定好的调度算法将用户请求负载给某台Real Server ; Director 会将用户的请求报文中的目标地址,从原来的VIP改为RealServer的RIP(eth0),然后再转发给RealServer, 3.RealServer收到一个源地址为CIP目标地址为自己RIP的请求 4.RealServer处理好请求后会将一个源地址为自己RIP目标地址为CIP的数据包通过Director 发出去, 5.Driector Server收到一个源地址为RealServer1 的IP 目标地址为CIP的数据包 6.Driector Server 会将源地址修改为自己的VIP(eth0),然后再将数据包发送给用户。

DR模式

DR模式:直接路由模式。通过改写请求报文的MAC地址,将请求发送到 rs,而 rs 将响应直接返回给客户 ,性能最好。dr只负责处理入站请求,不处理出站请求。

原理

1.不管是Director Server还是Real Server上都需要配置VIP 2.当用户请求到达我们的集群网络的前端路由器的时候,请求数据包的源地址为CIP目标地址为VIP 3.路由器会发广播问谁是VIP,集群中所有的节点都配置有VIP,此时谁先响应路由器那么路由器就会将用户请求发给谁,这样一来我们的集群系统是不是没有意义了 4.我们可以在网关路由器上配置静态路由指定VIP就是Director Server,或者使用一种机制不让Real Server 接收来自网络中的ARP地址解析请求(关闭realserver的ARP解析器),这样一来用户的请求数据包都会经过Director Servre 5.当Director Server收到用户的请求后根据此前设定好的调度算法结果来确定将请求负载到某台Real Server上去 6.Director Server 会将数据帧中的目标MAC地址修改为该Real Server的MAC地址,然后再将数据帧发送出去 7.当Real Server收到一个源地址为CIP目标地址为VIP的数据包时,Real Server发现目标地址为VIP,而VIP是自己,于是接受数据包并给予处理 8.当Real Server处理完请求后,会将一个源地址为VIP目标地址为CIP的数据包发出去,此时的响应请求就不会再经过Director Server了,而是直接响应给用户

TUN模式

TUN模式:隧道模式,转发原理类似于DR模式。主要是位于不同位置(不同机房),通过隧道进行了信息传输,虽然增加了负载,可是因为地理位置不同的优势,还是可以参考的一种方案。这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议。

四、LVS调度算法

RR

轮询,将所有客户端的请求,按请求顺序依次分配到后端服务器上。

WRR

加权轮询,对轮询算法的优化和补充,考虑每台服务器的性能,为每台服务器赋一权重值,权重值大的,处理请求越多。比如A服务器权重为1,B服务器权重为2,B服务器处理的请求将是A服务器的2倍。

LC

最小连接调度算法,把客户端的请求调度到连接最小的服务器上。

WLC

加权最小连接,根据服务器的性能,加一个权重值。

LBLC

局部最小连接,将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LBLCR

带复制的最小局部连接。

DH

目的地址哈希调度,以目的地址为关键字查找一个静态hash表来获得需要的RS

SH

源地址哈希调度,以源地址为关键字查找一个静态hash表来获得需要的RS