435421 发表于 2016-4-25 09:47:07

LB集群之LVS-dr

DR模式的一台Director server和两台Real server都要是公网IP,其缺点就是比较浪费公网IP。所以我们在这里的IP都视为公网IP

1、清空之前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]
查看完整版本: LB集群之LVS-dr