开发者学堂课程【LVS 负载均衡实战:负载均衡 LVS 工作模型】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/553/detail/7632
负载均衡 LVS 工作模型(三)
四、几种常见的 lvs 集群模式
lvs-nat 模式
lvs-nat :
本质是多目标IP的 DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和POR T实现转发
1.RIP 和 DIP 应在同一个IP网络(一般情况下位于同一个网络),且应使用私网地址;RS 的网关要指向 DIP(前提是位于同一个网段下)
2.请求报文和响应报文都必须经由 Director 转发,Director 易于成为系统瓶颈
3.支持端口映射,可修改请求报文的目标 PORT
4.LVS 必须是 Linux 系统,RS可以是任意OS系统
NAT 模式示意图:
NAT模式IP包调度过程:
/**
当客户端发送的请求经过互联网到达lvs服务器后目标地*址VIP转换为目的地址RIP,因为支持端口映射,所以端口*也又原来的80转变为9000。
经过交互机之后便到达了*web服务器,数据报文在返回时,又会被替换回去。
**/
LVS-DR 模式
LVS-DR :
Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
(1) Director和各RS都配置有VIP
(2)确保前端路由器将目标IP为VIP的请求报文发往Director
在前端网关做静态绑定VIP和口Director的MAC地址
在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
在Rs上修改内核参数以限制arp通告及应答级/proc/sys/net/ipv4/conf/all/arp_ignore/proc/sys/net/ipv4/conf/all/arp_announce
(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
(4)RS和Director要在同一个物理网络
(5)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
(6)不支持端口映射(端口不能修败)(7 )RS可使用大多数OS系统
DR 模式辅助理解示意图:
/**
*DR模式的工作原理大致是这样的,在LVS上有两个地址,*一个是VIP,还有一个是DIP。客户端发送请求经过路由器,*进入到企业内部,首先到达LVS服务器,这时的LVS服务*器*在接受到请求之后并不做网络层的修改。这一点与我们之*前讲的NAT DNAT会进行地址替换又有所不同。
*路由器不会修改地址,在到达lvs服务器之后,lvs会根据*调度算法将其调度到一个机器上去。特别注意调度过程是*如何实现的:
原地址CIP XXXX 不变,目标地址 VIP 80仍*然不变,但是MAC地址变了,MAC地址由原先的MAClvs*变为了MACrs1。
*当lvs通过广播寻找到它的MAC地址,但需要注意的是如*果使用了广播去寻找地址,那么LVS与ROUTE之间就只*能是交互机而不能是路由器。当然数据报文还是能够到达*后端的really server 的。
这时会出现新的问题,reall *server无法识别目标地址;解决方案是给每一台reall *server都配置一个RIP。
回应数据包,原地址变成了vip
*80 MACrs1,目标地址变为了CIP XXXXX MAC2。
MAC2*是通过广播获得的。转出去后原地址变成了 VIP 80 MAC1,*目标地址变为了CIP XXX MACc。逻辑上比较复杂,但是*配置起来十分的简单。
同步请求:
客户端发送请求到达LVS*后到达RS,回应报文是第二次过程。实际上同步请求进行了
*两次操作。
**/
//同一个网卡下的VIP 和 CIP 下的MAC地址是同一个地址。
实际生产过程中的集群环境:
//总体上是一个多级调度的过程,比较典型的例子便是大众点评的调度设置。