描述LVS-DR工作原理,并配置实现

DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种:
(1) 在前端网关做静态绑定
(2) 在各RS使用arptables
(3) 在各RS修改内核参数,来限制arp响应和通告的级别
限制响应级别:arp_ignore
0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
1: 仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别:arp_announce
0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告
2:必须避免将接口信息向非本网络进行通告

LVS实现DR模型(生产常用)
ps:此实验在同一台机器模拟,中间经过模拟路由,指向同一个网关,所以彼此互通,主要是测试调度的效果,在生产中,往往在LVS前面加上防火墙,这样DIP和RIP就都是内网地址

DR模型中各主机上均需要配置VIP,建议用修改内核参数的方式:
arp_ignore:理解为不搭理
arp_announce:理解为不响应

其中一台作为route,开启端口转发:

[root@route ~]#sysctl -p
net.ipv4.ip_forward = 1

客户端网关指向route:
此时的内外网应该是互通的,在客户端可以curl到realserver的页面

[root@test ~]#curl 172.18.5.51
172.18.5.51 RS01-web01

LVS:网关指向route,要绑定VIP,也要设置DIP,网关可以随便配(但是还是配上正常的比较好,如果后端RS都停掉,LVS还可以做sorry server),但是不配不行必须配

[root@lvs01 ~]#ip a a 172.18.5.100/24 dev eth0
[root@lvs01 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a8:10:c2 brd ff:ff:ff:ff:ff:ff
    inet 172.18.5.21/24 brd 172.18.5.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.18.5.100/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea8:10c2/64 scope link 
       valid_lft forever preferred_lft forever

RS:配置VIP,可以借鉴这个脚本

[root@web01 ~]#vim lvs_rs.sh

vip=172.18.5.100
mask='255.255.255.255'
dev=eth0: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@web01 ~]#bash lvs_rs.sh start
The RS server is Ready!
[root@web01 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:25:b8:66 brd ff:ff:ff:ff:ff:ff
    inet 172.18.5.51/24 brd 172.18.5.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 172.18.5.100/32 brd 172.18.255.255 scope global eth0:1
       valid_lft forever preferred_lft forever

添加规则,注意RS添加其他端口也没用,LVS不支持端口转发

[root@lvs01 ~]#ipvsadm -A -t 172.18.5.100:80 -s rr
[root@lvs01 ~]#ipvsadm -a -t 172.18.5.100:80 -r 172.18.5.52
[root@lvs01 ~]#ipvsadm -a -t 172.18.5.100:80 -r 172.18.5.51
[root@lvs01 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.18.5.100:80 rr
  -> 172.18.5.51:80               Route   1      0          0         
  -> 172.18.5.52:80               Route   1      0          0 

测试

[root@test ~]#while true;do curl 172.18.5.100;sleep 0.5;done
172.18.5.51 RS01-web01
172.18.5.52 RS02-web02
172.18.5.51 RS01-web01
172.18.5.52 RS02-web02
172.18.5.51 RS01-web01
172.18.5.52 RS02-web02
172.18.5.51 RS01-web01
172.18.5.52 RS02-web02
172.18.5.51 RS01-web01
172.18.5.52 RS02-web02

拍错思路:路由、规则
网络通不通,地址是表象,路由是核心
一般还是习惯绑定在回环网卡,不会随着物理网卡的情况变动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值