LVS负载均衡集群架构

本文已得到原做者霸都民工哥受权。linux

写在前面

为何须要使用负载均衡呢?这是一个必较重要的问题
实际生产环境中某单台服务器已不能负载平常用访问压力时,就须要使用负载均衡,把用户的请求数据分担到(尽量平均分配)后端全部功能同等的集群的节点上,一样也是为了解决单台服务器故障问题,从而提升用户的访问体验。

LVS简单介绍

LVS(linux virtual server)LINUX 虚拟服务器,是一个虚拟的服务器集群系统,能够在 linux 和 unix 系统中运行,1985年开发研究的项目。
官方网站:http://www.linuxvirtualserver...nginx

IPVS(lvs)发展史

在linux2.2内核时,IPVS 就已经之内核补丁的形式出现
从2.4。24版本之后 IPVS 已经成为 linux 内核官方标准内核的一部分算法

LVS 工做原理

  • LVS 负载均衡调度技术是在 linux 内核中实现的,咱们使用配置 LVS 时,不是直接配置内核中的 IPVS,而是经过 IPVS 的管理工具 IPVSADM 来管理配置
  • LVS 集群负载均衡器接受全部入站客户端的请求,并根据算法来决定由哪一个集群的节点来处理请求

LVS 相关术语介绍

  • 虚拟 IP 地址(VIP):用于向客户端提供服务的 IP 地址(配置于负载均衡器上)
  • 真实的IP地址(RIP):集群中节点服务器的IP地址
  • 负载均衡器 IP 地址(DIP):物理网卡上的IP,用与同外网链接的地址
  • 客户端主机 IP 地址(CIP): 终端请求用户的主机IP地址

LVS 几种工做模式介绍

NAT 网络地址转换模式(VS/NAT)

经过网络地址转换,调度器 LB 重写请求报文的目标地址,根据算法将请求分配给后端的真实主机服务器,真实服务器响应处理报文后返回给调度器 LB ,通过 LB 的报文源地址被重写,再返回给请求的客户端用户
后端

过程详解
1:客户端请求 CIP(10.10.0.1:80)目标的地址是VIP(1.1.1.1:80)

2:数据通过 LB,目的地址将被 LB 改写成后端服务器其中一个主机地址(RIP 192.168.1.1:80)服务器

3:服务器接收到数据请求后返回应答信息(源地址:192.168.1.:80,目的地址:1.1.1.1:80,所以处的网关地址需指向LB)给 LB微信

4:LB 需将源数据地址改写成 VIP 地址(1.1.1.1:80,但实际的源地址是RIP1的地址)网络

5:LB 将数据返回给请求的客户端用户,完成整个流程的访问
所以 WEB 访问量很大的时候,LB 就会有很大的负载压力,通常支持10-20台节点,可是这种模式支持IP和端口的转换功能,即10.10.0.1:80---->1.1.1.1:80---->192.168.1.1:8080架构

TUN 隧道模式(VS/TUN)

LB 将请求的报文经过IP隧道转发给真实服务器,这样 LB 只要须要处理请求入站报文,所以可提升访问效率负载均衡

过程详解
1:客户端发送请求数据包(源:CIP10.10.1.1:80,目的地址:VIP1.1.1.1:80)

2:数据包到达 LB 后,LB 将数据包从新封装成另外一个 IP 包(源目地址不变,增长一个IP头),经过隧道转发给真实服务器运维

3:真实服务器收到数据包后进行解包,数据包信息是(源:CIP 10.10.1.1:80,目的地址:VIP 1.1.1.1:80),最终发现目的地址不是本身(所以须要在服务器LO上绑定一个VIP地址),这样才会处理数据,返回处理数据

4:客户端接收到返回的数据(源地址 VIP 1.1.1.1:80,目的地址 CIP 10.10.1.1:80),符合 TCP/IP 的原理,所以整个访问过程完成

注:这时确定有朋友发现这里会有一个问题,每台服务器上都绑定了一个相同 VIP 地址,用户访问时的目的地址也是 VIP,当数据包达到路由器后通过转发至内网,内网可能会产生多台回应数据包的机器,而后用户收到的最快回应的内网机器发来的数据,这样一来数据包也就没有通过 LB,就不是负载均衡了,因此须要作抑制 ARP 的功能,使全部真实服务器再也不响应目的地址是 VIP 的请求,只要 LB 来响应请求,从而达到负载均衡。在实际生产环境中不多使用这种模式

DR 模式(Direct Routing)直接路由模式

此模式是经过改写请求报文的目标 MAC 地址,将请求发给真实服务器,而真实服务器将响应后的数据直接回应给请求的客户端,此模式要求 LB 与真实服务器须要有一块物理网卡都是链接在同一网段上

过程详解
1:客户端发出请求数据包(源 CIP 10.10.1.1:80 目的VIP1.1.1.1:80)

2:LB 接收到数据包后,不转换地址及端口,也不从新封装,只是将数据帧中的目的地址的 MAC 地址改写算法调度的真实机的 MAC 地址,将数据包转发出去

3:真实机收到数据后,可是发现数据包中目的地址不是本身(因此事先也得在 LO 上绑定一个 VIP 地址,同时配置抑制ARP),这样真实机作出响应直接回复客户端

4:客户端收到回复的数据包(源 VIP 1.1.1.1:80 目的 CIP 10.10.1.1:80),完成整个访问过程

注:LB 只能改写目的 MAC 地址,所以它不能改变请求报文的目的端口端口,LVS 只支持 unix 和 linux,但集群节点服务器能够是 win 系统,此种模式配置至关麻烦

FULLNAT 模式(淘宝开源)

解决了上述三种的缺点
解决了真实服务器能跨越 VLAN 通信,只须要链接到内网便可

入站时:
目标 IP 更改成真实服务器的 IP,源 IP 更改成内网的本地IP(一组内网IP)
出站时:
目标IP更改成客户端的 IP,源 IP 更换为 VIP

LVS 算法介绍

LVS 的调度算法决定了如何在集群节点之间分配负载压力(访问请求)

调度算法

  • rr 轮循调度:将请求依次分配给集群的节点,这种算法适用于各个节点处理能力基本相同的状况下
  • wrr 加权轮循调度:根据节点的权重来分配,权重较高的优先分配
  • wlc 加权最小链接数调度:按权重和链接数的数量来分配
  • lc 最小链接数调度:按链接数的数量来分配

实际生产环境 LVS 调度算法选型

通常网络服务,如 HTTP、MAIL、MYSQL 经常使用的调度算法有:rr、wlc、wrr

做者:霸都民工哥
连接: https://mp.weixin.qq.com/s...
来源:微信公众号

更多相关文章:
Docker Compose+nginx 实现负载均衡
深刻理解负载均衡
分布式架构实践——负载均衡

若是你还想了解更多,想和技术同僚分享切磋,可扫下方二维码,回复 yw,加入掘金运维技术交流群
掘金-斌斌

相关文章
相关标签/搜索