DR模式的实现
•1.准备3台虚拟机node1,node2,node3
•2.先配置3台虚拟机的网络:分别为192.168.20.101,192.168.20.102,192.168.20.103
–ens33,配置在一个网段
–DIP,RIP在一个网段
•3,配置lvs的VIP
[root@node1 ~]# ifconfig ens33:3 192.168.20.100 netmask 255.255.255.0
或(一样的)
[root@node1 ~]# ifconfig eth0:3 192.168.20.100/24
[root@node1 ~]# ifconfig
ens33 Link encap:Ethernet HWaddr 00:0C:29:36:EB:66
......
ens33:3 Link encap:Ethernet HWaddr 00:0C:29:36:EB:66
inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
查看/proc/sys/net/ipv4/ip_forward文件内容,默认为0,表示如果请求过来的数据表发现不是找的自己,则丢弃。将之改为1,表示转发走
[root@node1 ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@node1 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@node1 ~]# cat /proc/sys/net/ipv4/ip_forward
1
•4.调整RS的响应。通告级别(每一台RS都配):
[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
•5.配置RS的VIP(每一台RS都配)
[root@node2 ~]# ifconfig lo:8 192.168.20.100 netmask 255.255.255.255
别忘了node3也要执行步骤:4和5
•6,启动RS上的httpd
[root@node2 ~]# yum install httpd -y
[root@node2 ~]# cd /var/www/html
[root@node2 html]# vi index.html
添加 from 192.168.20.102
[root@node2 ~]# service httpd start
•客户端浏览器验证:RIP:80 能显示
–VIP:80不能显示
在node3上执行步骤6,不过向index.html中添加from 192.168.20.103
•7,LVS——ipvsadm
ipvsadm 参数详解:
-C 清除表中所有的记录
-A --add-service在服务器列表中新添加一条新的虚拟服务器记录
-t 表示为tcp服务
-u 表示为udp服务
-s --scheduler 使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
ipvsadm -A -t 192.168.20.100:80 -s rr
-a --add-server 在服务器表中添加一条新的真实主机记录
-t --tcp-service 说明虚拟服务器提供tcp服务
-u --udp-service 说明虚拟服务器提供udp服务
-r --real-server 真实服务器地址
-m --masquerading 指定LVS工作模式为NAT模式
-w --weight 真实服务器的权值
-g --gatewaying 指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ipip 指定LVS的工作模式为隧道模式
-p 会话保持时间,定义流量呗转到同一个realserver的会话存留时间
ipvsadm -a -t 192.168.20.100:80 -r 192.168.20.102 -g
[root@node1 ~]# yum install ipvsadm -y
[root@node1 ~]# ipvsadm -A -t 192.168.20.100:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.20.100:80 -r 192.168.20.102 -g
[root@node1 ~]# ipvsadm -a -t 192.168.20.100:80 -r 192.168.20.103 -g
[root@node1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.20.100:80 rr
-> 192.168.20.102:80 Route 1 0 0
-> 192.168.20.103:80 Route 1 0 0
http://192.168.20.100/浏览器刷新: 访问vip。发现轮询的方式响应信息了。
验证:多次刷新访问vip,然后在node1,node2,node3中通过命令netstat -natp查看
再次狂刷多次访问vip
[root@node1 ~]# ipvsadm -lnc
DR模式小结:
- 通过在调度器LB上修改数据包的目的MAC地址实现转发。注意源地址仍然是CIP,目的地址仍然是VIP地址。
- 请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)
- 因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面
- RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。
- RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接出网就可以。
由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。