LB集群之LVS-dr
DR模式的一台Director server和两台Real server都要是公网IP,其缺点就是比较浪费公网IP。所以我们在这里的IP都视为公网IP1、清空之前NAT模式下的规则
# ipvsadm -C
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
# iptables -t nat -F
2、改回rs1和rs2的网关
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 把网关改回来
ifdown eth0; ifup eth0
3.dir网卡IP配置为:
eth0 192.168.1.180(外网)
rs1网卡IP配置为:
eth0 192.168.1.181(外网)
rs2网卡IP配置为:
eth0 192.168.1.182(外网)
4、配置dir
配置脚本
# vim /usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.1.190
rs1=192.168.1.182
rs2=192.168.1.181
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
执行脚本
# sh /usr/local/sbin/lvs_dr.sh
查看
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP192.168.1.190:80 rr
-> 192.168.1.181:80 Route 1 0 0
-> 192.168.1.182:80 Route 1 0 0
5、配置rs1和rs2
在rs1和rs2上配置如下一样的脚本
# vim /usr/local/sbin/lvs_rs.sh //写入如下内容
#! /bin/bash
vip=192.168.1.190
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
在rs1和rs2上都执行脚本
# sh /usr/local/sbin/lvs_rs.sh
可以用ifconfig查看到已经启动了lo:0这个vip,也可以用ipvsadm -ln查看详情。
6、测试
(1)打开另外一台新机器来测试结果如下:
# curl 192.168.1.190
rs2 nginx
# curl 192.168.1.190
rs1 nginx
# curl 192.168.1.190
rs2 nginx
# curl 192.168.1.190
rs1 nginx
# curl 192.168.1.190
rs2 nginx
# curl 192.168.1.190
rs1 nginx
2)测试权重
编辑dir上的脚本,修改权重:rs1权重为2,rs2权重为1。
vim /usr/local/sbin/lvs_dr.sh
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.1.190
rs1=192.168.1.182
rs2=192.168.1.181
ifconfig eth0:0 down
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 2
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
~
ifconfig eth0:0 down //因为之前执行脚本已经生成过eth0:0,故down掉
在新机器上测试结果如下
rs2 nginx
# curl 192.168.1.190
rs1 nginx
# curl 192.168.1.190
rs1 nginx
# curl 192.168.1.190
rs2 nginx
# curl 192.168.1.190
rs1 nginx
# curl 192.168.1.190
rs1 nginx
# curl 192.168.1.190
rs2 nginx
页:
[1]