您的位置:首页 > 其它

LVS-DR三种不同实现方式

2019-05-26 23:12 756 查看

LVS-DR三种不同实现方式

1.VIP和DIP在同一网段的实现

网络拓扑图

配置环境

配置Client网关指向route的RIP1

[root@client ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.22.27.20    0.0.0.0         UG    100    0        0 ens33
172.22.0.0      0.0.0.0         255.255.0.0     U     100    0        0 ens33

route上开启路由间转发

[root@route ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

VS操作

在director上将网关指向route的RIP2

[root@director ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.153.10  0.0.0.0         UG    100    0        0 ens33
192.168.153.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

执行脚本配置VS

[root@director ~]# bash lvs_dr_vs.sh start
The VS Server is Ready!

脚本内容

#!/bin/bash
vip='192.168.153.50'
iface='lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.153.30'
rs2='192.168.153.40'
scheduler='wrr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F

ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
echo "The VS Server is Ready!"
;;
stop)
ipvsadm -C
ifconfig $iface down
echo "The VS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

RS操作

分别在两台RS上将网关指向route的RIP2

[root@rs1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.153.10  0.0.0.0         UG    100    0        0 ens33
192.168.153.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

在RS端执行lvs配置脚本

[root@rs1 ~]# bash lvs_dr_rs.sh start
The httpd Server is Ready!
The RS Server is Ready!

脚本内容

#!/bin/bash
vip=192.168.153.50
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready!"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
echo "The RS Server is Ready!"
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "The RS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

测试

[root@client ~]# curl 192.168.153.50
<h1>rs2</h1>
[root@client ~]# curl 192.168.153.50
<h1>rs1</h1>

2.VIP和DIP不在同一网段

网络拓扑图

配置环境

配置Client网关指向route的RIP1

[root@client ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.22.27.20    0.0.0.0         UG    100    0        0 ens33
172.22.0.0      0.0.0.0         255.255.0.0     U     100    0        0 ens33

route上开启路由间转发

[root@route ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

在route上绑定一个IP用来接收RS的相应报文

[root@route ~]# ip a a 192.168.100.100/24 dev ens37

VS端操作

在director上将网关指向route的RIP2

[root@director ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.153.10  0.0.0.0         UG    100    0        0 ens33
192.168.153.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

执行脚本配置VS

[root@director ~]# bash lvs_dr_vs.sh start
The VS Server is Ready!

脚本内容

#!/bin/bash
vip='192.168.100.50'
iface='lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.153.30'
rs2='192.168.153.40'
scheduler='wrr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F

ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
echo "The VS Server is Ready!"
;;
stop)
ipvsadm -C
ifconfig $iface down
echo "The VS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

RS操作

分别在两台RS上将网关指向route的RIP2

[root@rs1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.153.10  0.0.0.0         UG    100    0        0 ens33
192.168.153.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

在RS端执行lvs配置脚本

[root@rs1 ~]# bash lvs_dr_rs.sh start
The httpd Server is Ready!
The RS Server is Ready!

脚本内容

#!/bin/bash
vip=192.168.100.50
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready!"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
echo "The RS Server is Ready!"
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "The RS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

测试

[root@client ~]# curl 192.168.100.50
<h1>rs2</h1>
[root@client ~]# curl 192.168.100.50
<h1>rs1</h1>

3.VIP和DIP不在同一网段2(route使用一个ip地址)

网络拓扑图

配置环境

配置Client网关指向route的RIP1

[root@client ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.22.27.20    0.0.0.0         UG    100    0        0 ens33
172.22.0.0      0.0.0.0         255.255.0.0     U     100    0        0 ens33

route上开启路由间转发

[root@route ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

在route上配置RIP2

[root@route ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
IPADDR=192.168.100.100
PREFIX=24

RS配置

执行RS配置脚本

[root@rs1 ~]# bash lvs_dr_rs.sh start
The httpd Server is Ready!
The RS Server is Ready!

脚本内容

#!/bin/bash
vip=192.168.100.50
mask='255.255.255.0'
dev=ens33:1
rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready!"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
echo "The RS Server is Ready!"
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "The RS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

将VS的网关指RIP2

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.100 0.0.0.0         UG    0      0        0 ens33
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.153.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

VS配置

为director配置地址

[root@director ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.153.20
PREFIX=24

执行vs配置脚本

[root@director ~]# bash lvs_dr_vs.sh start
The VS Server is Ready!

脚本内容

#!/bin/bash
vip='192.168.100.50'
iface='ens33:1'
mask='255.255.255.255'
port='80'
rs1='192.168.153.30'
rs2='192.168.153.40'
scheduler='wrr'
type='-g'
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F

ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
echo "The VS Server is Ready!"
;;
stop)
ipvsadm -C
ifconfig $iface down
echo "The VS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

测试

[root@client ~]# curl 192.168.100.50
<h1>rs2</h1>
[root@client ~]# curl 192.168.100.50
<h1>rs1</h1>[root@client ~]# curl 192.168.100.50
<h1>rs2</h1>
[root@client ~]# curl 192.168.100.50
<h1>rs1</h1>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐