由于DR模式中,VS/DR只负责数据的转发,而数据的返回则是由后端服务器直接返回给客户端,从而降低了VS/DR的负载,所以DR模式是大多数公司的第一选择。
以下是DR模式的官方网络拓扑:
从上图可以看中,后端服务器与dr之间,必须处于同一物理网段。但是根据TCP层的协议,如果数据包是客户端传向VIP的,那么客户端收到的也必须是VIP地址,所以在配置LVS后端服务器的时候,也需要配置VIP。而仅仅配置VIP也不能满足负载均衡本身的要求(在有任意一台服务器宕机时,另外的服务器可以随时托管业务),假如有任意的一台后端服务器宕机,VIP返回时,会同时携带其ARP信息致客户端,因此,在配置的时候也需要忽略ARP的返回才可以避免出现问题(具体配置可参考Linux调优-网络调优章节)。
LVS的部署需要以下条件支持:
Director Server服务端:
安装包:
ipvsadm:通过yum info ipvsadm(官方源)可以查看到其安装包的相关信息(如版本,大小等),通过yum install ipvsadm即可。
转发开启:
net.ipv4.ip_forward = 1 (配置/etc/sysctl.conf后,执行sysctl -p启用参数)
配置文件:
修改/etc/sysconfig/ipvsadm,加入restart和stop时保存已配置或修改的功能,以防配置后没有save导致配置丢失
IPVS_SAVE_ON_STOP="yes"
IPVS_SAVE_ON_RESTART="yes"
VIP配置:
ifconfig eth0:0 VIP broadcast VIP netmask 255.255.255.255 up #配置VIP网卡
route add -host VIP dev eth0:0 #配置VIP的路由
ipvsadm -A -t VIP:80 -s wrr -p 3
-A:添加一个虚拟服务
-t:指定为TCP服务,对外提供VIP的80端口进行服务,如果需要配置NAT,也是配置VIP的相应端口
-s:调度方法,这里的wrr是指加权轮询。具体的可支持方法可以参考man手册
-p:指定服务器持久性会话的超时时长,默认为300s
ipvsadm -a -t VIP:80 -r RIP1:80 -g -w 1
-a:添加一个后端服务器
-t:指定其占用的VIP以及VIP的端口
-r:指定后端服务器的RIP和应用端口
-g:使用指定的网关
-w:权重值
ipvsadm -a -t VIP:80 -r RIP2:80 -g -w 1
RS客户端配置:
ARP返回忽略,返回地址改变为可与客户端通信的地址(announce为通告模式):
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
配置VIP网卡:
ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP
route add -host VIP dev lo:0