一、LVS-DR模型搭建拓扑图
图1
搭建结构:笔记本访问VIP:192.168.9.100(LVS),node01为LVS,node02和node03作为RealServer承受均衡负载。192.168.9.1为vmnet8的网卡(windows系统中的网卡),192.168.9.2作为虚拟局域网络的网关(也是NAT服务器的IP地址,这个NAT服务器可以发挥路由器的作用)。
二、搭建所需技术
1.RealServer隐藏VIP的方法:对外隐藏,对内可见
图2
步骤概括:将VIP地址配置在RealServer的lo网卡接口上,不配置在eth0上,这样外网数据包通过网卡流向eth0接口,由于我们将arp_ignore配置成1以及arp_announce配置成2,又由于eth0上没有配置VIP,所以外网的CIP_VIP数据包不会由eth0来处理,相当于RealServer的VIP对外网不可见,只对自己可见,实现了对外隐藏,对内可见了。
2.与LVS打交道的接口软件指令——ipvsadm
图3
解释:由于LVS属于linux内核,我们不能直接和内核打交道,所以只能下载一个ipvsadm的程序来间接的与linux内核打交道。
3.LVS调度算法
图4
关于动态调度算法的解释:静态就不说了,有加权Round Robin和Round Robin等。那么动态是怎么个动态呢,我们知道LVS是不建立三次握手以及四次挥手的,它不会干预三次握手,数据传输以及四次挥手的过程。那么他就不会知道RealServer的连接数是多少,从而动态分配负载。答案在于:LVS虽然不建立握手,但是它会窥视握手和数据传输以及挥手的整个过程!!并记录整个过程以便将后续数据正确的发送给对应的RealServer。它知道Client和RealServer的所有动作,但是只是负责转发,不做任何干预。而窥视实现是LVS可以窥视数据包TCP层的数据包状态码(图5的FLAG标志位)。状态码会记录这次的数据包是握手包,挥手包还是数据传输包,一旦发现是握手,则LVS会对于该RealServer的连接数++,一旦发现时分手包,则- -。从而实现了对负载连接数量的监视,也就可以实现动态负载分配。