本文已得到原做者霸都民工哥受权。linux
为何须要使用负载均衡呢?这是一个必较重要的问题
实际生产环境中某单台服务器已不能负载平常用访问压力时,就须要使用负载均衡,把用户的请求数据分担到(尽量平均分配)后端全部功能同等的集群的节点上,一样也是为了解决单台服务器故障问题,从而提升用户的访问体验。
LVS(linux virtual server)LINUX 虚拟服务器,是一个虚拟的服务器集群系统,能够在 linux 和 unix 系统中运行,1985年开发研究的项目。
官方网站:http://www.linuxvirtualserver...nginx
在linux2.2内核时,IPVS 就已经之内核补丁的形式出现
从2.4。24版本之后 IPVS 已经成为 linux 内核官方标准内核的一部分算法
经过网络地址转换,调度器 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架构
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 来响应请求,从而达到负载均衡。在实际生产环境中不多使用这种模式
此模式是经过改写请求报文的目标 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 系统,此种模式配置至关麻烦
解决了上述三种的缺点
解决了真实服务器能跨越 VLAN 通信,只须要链接到内网便可
入站时:
目标 IP 更改成真实服务器的 IP,源 IP 更改成内网的本地IP(一组内网IP)
出站时:
目标IP更改成客户端的 IP,源 IP 更换为 VIP
LVS 的调度算法决定了如何在集群节点之间分配负载压力(访问请求)
通常网络服务,如 HTTP、MAIL、MYSQL 经常使用的调度算法有:rr、wlc、wrr
做者:霸都民工哥
连接: https://mp.weixin.qq.com/s...
来源:微信公众号
更多相关文章:
Docker Compose+nginx 实现负载均衡
深刻理解负载均衡
分布式架构实践——负载均衡
若是你还想了解更多,想和技术同僚分享切磋,可扫下方二维码,回复 yw,加入掘金运维技术交流群