调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

LVS负载分担(DR模式)基础搭建(一)_LVS负载分担

 

在VS/DR中,请求报文的目标地址为VIP,响应报文的源地址也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道是哪一台服务器处理的。

DR模式的网络的连接方式:

1、RIP和DIP和VIP在一个网段内,也就是都是公网地址。

LVS负载分担(DR模式)基础搭建(一)_LVS负载分担_02

工作流程说明:

客户端访问VIP,由director接收处理,选择调度相应的web服务器,服务器处理后直接返回给客户端。

因此,real server的网关需指向A地址。

1、地址规划

LVS负载分担(DR模式)基础搭建(一)_LVS负载分担_03

2、地址配置

real server的VIP不能响应广播报文,也不能让其它接口把自己通告出去,也就是存在就行,不要出门和别人打招呼。

director

[root@filesystem ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.94.132  netmask 255.255.255.0  broadcast 192.168.94.255
        inet6 fe80::93e8:3599:36a8:58bf  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a3:92:45  txqueuelen 1000  (Ethernet)
        RX packets 10619  bytes 10402504 (9.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3046  bytes 357957 (349.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@filesystem ~]# ifconfig ens33:0 192.168.94.200 netmask 255.255.255.0
[root@filesystem ~]#

web1

不能从接口将VIP广播出去,也不要在接口上应答VIP网络的请求。

[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@node1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node1 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
[root@node1 ~]# ifconfig lo:0 192.168.94.200 netmask 255.255.255.255 broadcast 192.168.94.200
[root@node1 ~]#

web2

[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
[root@node2 ~]# ifconfig lo:0 192.168.94.200 netmask 255.255.255.255 broadcast 192.168.94.200
[root@node2 ~]#

测试

我们用客户端ping一下VIP地址,然后arp –a 查看mac地址表,与director的mac对应,现在web1和web2实现了VIP不对外通告也不应答。

LVS负载分担(DR模式)基础搭建(一)_LVS负载分担_04

3、路由配置

客户端请求报文的源地址和目标地址为CIP和VIP,回应报文的源地址和目标地址应该是VIP和CIP。

默认情况回应报文会使用出接口的地址,也就是134、135、132等,不会使用VIP地址,我们需要增加一条路由,如果请求的目标IP是VIP,那么出去的数据包源地址也显示为VIP。

命令:route add –host $VIP dev VIP的接口

director

[root@filesystem ~]# route add -host 192.168.94.200 dev ens33:0
[root@filesystem ~]#

web1和web2

[root@node1 ~]# route add -host 192.168.94.200 dev lo:0
[root@node1 ~]#
[root@node2 ~]# route add -host 192.168.94.200 dev lo:0
[root@node2 ~]#

4、ipvsadm规则配置

我们对web服务使用负载分担,real server上的httpd服务配置这里就省略了。

[root@filesystem ~]# curl http://192.168.94.134
this is web1 is node1
[root@filesystem ~]# curl http://192.168.94.135
this is web2 is node2
[root@filesystem ~]#

规则配置

[root@filesystem ~]# ipvsadm -A -t 192.168.94.200:80 -s rr
[root@filesystem ~]# ipvsadm -a -t 192.168.94.200:80 -r 192.168.94.134:80 -g
[root@filesystem ~]# ipvsadm -a -t 192.168.94.200:80 -r 192.168.94.135:80 -g
[root@filesystem ~]# ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.94.200:80 rr
  -> 192.168.94.134:80            Route   1      0          0
  -> 192.168.94.135:80            Route   1      0          0
[root@filesystem ~]#

5、结果测试

测试发现rr轮询的调度算法可以使用,实现了LVS的DR模型

LVS负载分担(DR模式)基础搭建(一)_LVS负载分担_05

LVS负载分担(DR模式)基础搭建(一)_LVS负载分担_06

 

读书和健身总有一个在路上

本文版权归作者和博客共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。