LVS-DR模式:
老师分析:
1、首先用户用CIP请求VIP
2、根据上图可以看到,不管是Director Server还是Real Server上都需要配置VIP,那么当用户请求到达我们的集群网络的前端路由器 的时候,请求数据包的源地址为CIP目标地址为VIP,此时路由器会发广播问谁是VIP,那么我们集群中所有的节点都配置有VIP,此时谁先响应路由器那么路由器就会将用户请求发给谁,这样一来我们的集群系统是不是没有意义了,那我们可以在网关路由器上配置静态路由指定VIP就是Director Server ,或者使用一种机制不让Real Server 接收来自网络中的ARP地址解析请求,这样一来用户的请求数据包都会经过Director Servrer。
3、当Director Server收到用户的请求后根据此前设定好的调度算法 结果来确定将请求负载到某台Real Server上去,假如说此时根据调度算法的结果,会将请求负载到RealServer 1上面去,此时Director Server 会将数据帧中的目标MAC地址修改为Real Server1的MAC地址,然后再将数据帧发送出去
4、当Real Server1 收到一个源地址为CIP目标地址为VIP的数据包时,Real Server1发现目标地址为VIP,而VIP是自己,于是接受数据包并给予处理,当Real Server1处理完请求后,会将一个源地址为VIP目标地址给CIP的数据包发出去,此时的响应请求就不会再经过Director Server了,而是直接响应给用户。
实际工作中,我们是没有权限更改路由器。
|----------|-----------------|-----------------------------------------|
| Server | Type | IP |
| server04 | 负载均衡调度服务器 DS | 192.168.17.110(DIP)192.168.17.205(VIP) |
| server01 | 真实服务器 RS Web服务器 | 192.168.17.107(RIP)192.168.17.205(VIP) |
| server03 | 真实服务器 RS Web服务器 | 192.168.17.109(RIP) 192.168.17.205(VIP) |
在RS上配置:
bash
#设置arp的通告模式 通过VIP请求到DS服务器
shell > echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
shell > echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
shell > echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
shell > echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#绑定VIP到网卡
shell > ifconfig lo:0 192.168.17.205 broadcast 192.168.17.205 netmask 255.255.255.255 up
#添加主机路由
shell > route add -host 192.168.17.205 dev lo:0
自己响应自己,通过lo速度更快一点。
添加路由,自己找自己的时候,到自己的lo网卡走进行了。
在DS上配置:
bash
#配置DS上的VIP
shell > ifconfig ens33:0 192.168.17.205 broadcast 192.168.17.205 netmask 255.255.255.255 up
#添加主机路由
shell > route add -host 192.168.17.205 dev ens33:0
#配置转发规则
shell > ipvsadm -C
shell > ipvsadm -A -t 192.168.17.205:80 -s rr
shell > ipvsadm -a -t 192.168.17.205:80 -r 192.168.17.107 -g
shell > ipvsadm -a -t 192.168.17.205:80 -r 192.168.17.109 -g
-g 是DR工作模式
然后再进行测试:
这种配置都是临时生效的,如果要让这些永久生效。
可以放到etc/rc.local这个开机自启配置文件。