LVS负载均衡DR模式

回复 收藏


dr1.jpg

二 DR模式
LVS DR模式:网络运行流向为外网客户访问Director的VIP,Director收到CIP的数据包,源IP为CIP目的IP为VIP,负载服务器根据分发机制指定好将要转发的后端服务器RS1,将数据包的目的MAC更改为将要转发的后端服务器RS1的网卡MAC地址,此时发给RS1的数据包还是源IP为CIP(172.16.3.2)目的IP为VIP(172.16.20.130),RS1接收到数据包后查看到目的IP为172.16.20.130,为自己主机lo:0上的IP,然后接收进行处理并重新封装数据包源IP为VIP目的IP为CIP,数据包又RS1的Eth0口发出给出公网的路由器网关,再逐步转发回客户端PC。负载均衡器只负责接收客户端PC发来的数据包并转发给后端服务器,后端数据包只负责接收负载均衡器发来的数据包并直接转发回客户端PC.相对于NAT模式,负载均衡器只负责接收转发客户端发来的数据并不负责转发回去给客户端,性能上要比NAT好。

网络环境:
负载均衡器
eth0 :  dip 172.16.20.131   255.255.255.0   gateway  172.16..20.1
eth0:0:  vip 172.16.20.130   255.255.255.0

RS1
eth0: rip 172.16.20.132   255.255.255.0   gateway   172.16.20.1
Lo:0  vip  172.16.20.130   255.255.255.255

RS2
Eth0: rip 172.16.20.133  255.255.255.0 gateway  172.16.20.1
Lo:0  rip  172.16.20.130   255.255.255.255

RS后端服务器a和b都安装上httpd并且运行,为了保证实验效果先将iptables和ip6tables都全部清空规则并停止服务
[root@chiang132 ~]# iptables -F
[root@chiang132 ~]# service iptables stop
[root@chiang133 ~]# iptables -F
[root@chiang133 ~]# service iptables stop

分别在RS后端服务器1和2上编辑测试页面,为了更好看出效果,内容区分一下
[root@chiang132 ~]# cat /var/www/html/index.html
this is chiang132 /var/www/html/index.htm
[root@chiang133 ~]# cat /var/www/html/index.html
this is chiang133 /var/www/html/index.htm

在负载均衡服务器上确定可以正确访问RS后端服务器的页面
[root@chiang131 ~]# curl 192.168.10.132
this is chiang132 /var/www/html/index.htm
[root@chiang131 ~]# curl 192.168.10.133
this is chiang133 /var/www/html/index.html
然后清空负载服务器上的iptables规则和ipvsadm规则
[root@chiang131 ~]# iptables -F
[root@chiang131 ~]# ipvsadm -C
[root@chiang131 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
开始创建eth0:0,设置好vip网络参数并启用
[root@chiang131 ~]# ifconfig eth0:0 172.16.20.130 netmask 255.255.255.0 broadcast 172.16.20.255 up
分别在RS1和RS2上启用lo:0虚拟ip,此ip设置为vip用来将从负载服务器发来的数据包保持源ip为172.16.20.130转发回客户端
[root@chiang132 ~]# ifconfig lo:0 172.16.20.130 broadcast 172.16.20.130 netmask 255.255.255.255 up
[root@chiang133 ~]# ifconfig lo:0 172.16.20.130 broadcast 172.16.20.130 netmask 255.255.255.255 up
然后分别在RS1和RS2上运行下面几条命令来抑制RS1和RS2上的lo网口的ARP响应,避免响应外界的arp请求并抑制发出arp响应,因为vip172.16.20.130在多个主机上设置,在同一个物理网络内部,即同一个广播域内,除了负载均衡器外的其他都有相同vip网口都不能响应arp请求,否则会造成ip冲突,相当于后端服务器上lo:0口对于本服务器外都是隐藏的,而负载均衡器的vip发给后端服务器的数据的目的MAC是后端服务器的eth0网口的mac,数据是最先到达后端服务器的eth0网口,eth0网口解开数据包发现目的MAC是自己的MAC,然后再解包发现目的IP172.16.20.130是本机上lo:0的IP,所以就认为此数据包是发给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上运行
[root@chiang132 ~]# route add -host 172.16.20.130 dev lo:0   ##指定后端服务器将从负载服务器接受到目的IP为172.16.20.130的数据包将从本机lo:0口为源ip口往外封装回送数据包,此时后端服务器上的eth0只为lo:0转发数据,并不以eth0的dip为源ip封装数据包,所以客户端收到的数据包里的源IP还是VIP172.16.20.130
使用任意一台可以访问负载均衡服务器VIP的客户端测试
[chiang@server1721632 ~]$ curl 172.16.20.130
this is chiang132 /var/www/html/index.htm
[chiang@server1721632 ~]$ curl 172.16.20.130
this is chiang133 /var/www/html/index.html

测试成功



2016-01-15 00:56 举报
已邀请:
0

huanglin

赞同来自:

看懂了些

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: