LVS的DR模式搭建
LVS是Linux Virtual Server,其工作模式如下
本实验要搭建LBC的LVS的DR工作模式
实验拓扑
注意,DR模式的项目拓扑
实验环境
Centos6.8 三台 分别模拟 负载均衡器和两台Web服务器
网络模式用的是仅主机模式 自定义的Vmnet10网卡 网段为10.10.10.0/24
负载均衡器的配置
1、修改网卡,创建子接口
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0 # 拷贝 eth0 网卡子接口充当集群入口接口
vim ifcfg-eth0:0
DEVICE=eth0:0
IPADDR= 10.10.10.100
NETMASK=255.255.255.0
2、关闭网卡重定向
vim /etc/sysctl.conf # 关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
sysctl -p
3、负载均衡器创建集群及添加集群子节点
ipvsadm -A -t VIP/集群IP/负载均衡器IP:80 -s rr # 添加 ipvs TCP 集群
ipvsadm -a -t VIP/集群IP/负载均衡器IP:80 -r 网站 1:80 -g # 添加 ipvsadm 集群子节点
ipvsadm -a -t VIP/集群IP/负载均衡器IP:80 -r 网站 2:80 -g
-A 添加一个集群
-a 添加集群的一个子节点
-t TCP协议
-g DR模式
-r real server 真实服务器
-s 负载均衡算法
rr 轮询
Commands:
Either long or short options are allowed.
--add-service -A add virtual service with options
--add-server -a add real server with options
--tcp-service -t service-address service-address is host[:port]
--gatewaying -g gatewaying (direct routing) (default)
--real-server -r server-address server-address is host (and port)
--scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,the default scheduler is wlc.
我的配置如下
ipvsadm -A -t 10.10.10.100:80 -s rr
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.12:80 -g
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g
为防止以上配置重启后失效,将其保存至开启自启中
[root@localhost ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]
真实服务器
1、开启Web服务,用于测试
RS1
[root@localhost ~]#service httpd start
[root@localhost ~]#echo "this is Server1" > /var/www/html/index.html
[root@localhost ~]#service httpd restart
RS2
[root@localhost ~]#service httpd start
[root@localhost ~]#echo "this is Server2" > /var/www/html/index.html
[root@localhost ~]#service httpd restart
2、关闭对应 ARP 响应及公告功能,用于解决地址冲突
vim /etc/sysctl.conf # 关闭对应 ARP 响应及公告功能
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p 使其生效
3、创建回环子接口,用于接收负载均衡器发来的流量,之所以MASK配置为32,即主机路由,是为了防止路由时产生的一些问题,不与24网段发生不必要的冲突;即把回环配置为32的主机路由
vim /etc/sysconfig/network-script/ifcfg-lo:0 # 拷贝回环网卡子接口
DEVICE=lo:0 IPADDR=负载均衡器的IP
NETMASK=255.255.255.255
ifup lo:0 使其生效
4、添加路由,由于RS上关闭了ARP的响应于公告,则会将网卡于回环地址独立,那么需要为其增设网关,使其路由
[root@localhost ~]# route add -host 10.10.10.100 dev lo:0
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.10.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth3
当有人访问主机10.10.10.100的时候,将其交给回环网卡
为防止服务器重启后,这条路由失效,将其加入到开启自启中
echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.local
测试
可见每次刷新就跳转到不同的页面,即集群的两个子节点,10.10.10.12 于 10.10.10.13
查看集群状态可见
- 两个子节点的连接是等分的,因为使用的是rr算法,即轮询,权重当然也是相同的
- OutBytes是0,因为用的是DR模式,即负载均衡器只进不出