一、DR 模式工作原理

         LVS 负载均衡集群部署之 DR 模式_第1张图片

如图,LVS-DR的工作原理,在图中已经说明,下面,我们来列举 LVS-DR 模式特点:

1、RIP 可以使用私有地址,也可以使用公网地址,如果使用公网地址,则可以直接对 RIP 进行访问。

2、所有请求的数据包必须经过 Director Server,但是所有响应的数据包必须不能经过 Director Server,这样使得在高负载网络环境中,降低了 Director Server 的压力。

3、Real Server 服务器的网关绝对不能指定为 DIP,因为,响应数据包不需要经过 Director Server。

4、Real Server 和 Director Server 必须在同一物理网络中。

5、需要在 Real Server 的 lo 网卡上绑定 VIP。

二、LVS-DR 模式部署

1、IP 地址分配

LVS 负载均衡集群部署之 DR 模式_第2张图片

2、Real ServerA 服务器配置

a、VIP 绑定

[root@weba ~]# cd /etc/sysconfig/network-scripts/

[root@weba network-scripts]# cp ifcfg-lo{,:0}

[root@weba network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.20.134

NETMASK=255.255.255.255

NETWORK=192.168.20.134

BROADCAST=192.168.20.134

ONBOOT=yes

NAME=lo:0

[root@weba network-scripts]# ifup ifcfg-lo:0

[root@weba network-scripts]# ifconfig

如图:

LVS 负载均衡集群部署之 DR 模式_第3张图片

b、修改内核参数,使得客户端发送到 VIP 的请求只有调度服务器响应,Real Server A(web服务器)不要响应。

[root@weba ~]# sysctl -a | grep net.ipv4.conf.all.arp_ignore

[root@weba ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf

[root@weba ~]# sysctl -a | grep net.ipv4.conf.lo.arp_ignore

[root@weba ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf

[root@weba ~]# sysctl -a | grep net.ipv4.conf.all.arp_announce

[root@weba ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

[root@weba ~]# sysctl -a | grep net.ipv4.conf.lo.arp_announce

[root@weba ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf

[root@weba ~]# sysctl –p

如图:

LVS 负载均衡集群部署之 DR 模式_第4张图片

3、Real ServerB 服务器配置:

a、VIP 绑定

[root@webb ~]# cd /etc/sysconfig/network-scripts/

[root@webb network-scripts]# cp ifcfg-lo{,:0}

[root@webb network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.20.134

NETMASK=255.255.255.255

NETWORK=192.168.20.134

BROADCAST=192.168.20.134

ONBOOT=yes

NAME=lo:0

[root@webb network-scripts]# ifup ifcfg-lo:0

[root@webb network-scripts]# ifconfig

如图:

LVS 负载均衡集群部署之 DR 模式_第5张图片

b、修改内核参数,使得客户端发送到 VIP 的请求只有调度服务器响应,Real ServerB (web服务器)不要响应。

[root@webb ~]# sysctl -a | grep net.ipv4.conf.all.arp_ignore

[root@webb ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf

[root@webb ~]# sysctl -a | grep net.ipv4.conf.lo.arp_ignore

[root@webb ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf

[root@webb ~]# sysctl -a | grep net.ipv4.conf.all.arp_announce

[root@webb ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

[root@webb ~]# sysctl -a | grep net.ipv4.conf.lo.arp_announce

[root@webb ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf

[root@weba ~]# sysctl –p

如图:

image

说明,以上4个内核参数的含义为:

arp_ignore 定义了对目标地址为本机 IP 的  ARP 询问的不同应答模式。

         0:响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上。

         1:只响应目的IP地址为接收网卡上的本地地址的arp请求。

         2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。

         3:如果ARP请求数据包所请求的IP地址对应的本地地址其作用域(scope)为主机(host),则不回应ARP响应数据包,如果作用域为全局(global)或链路(link),则回应ARP响应数据包。

         4~7:预留。

         8:不回应所有的arp请求。

arp_announce 对网络接口上发出的 ARP 请求包中的源IP地址作出相应的限制;主机会根据这个参数值的不同选择使用 IP 数据包的源 IP 或当前网络接口卡的IP地址作为ARP请求包的源IP地址。

         0:本机所有IP地址都向任何一个接口通告ARP报文。

         1:尽量仅向该网卡回应与该网段匹配的ARP报文。

         2:只向该网卡回应与该网段匹配的ARP报文。

4、Director Server  服务器配置:

a、VIP 绑定

[root@lvs ~]# cd /etc/sysconfig/network-scripts/

[root@lvs network-scripts]# cp ifcfg-ens33{,:0}

[root@lvs network-scripts]# vim ifcfg-ens33:0

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

NAME=ens33:0

DEVICE=ens33:0

ONBOOT=yes

IPADDR=192.168.20.135

PREFIX=24

[root@lvs network-scripts]# ifup ens33:0

[root@lvs network-scripts]# ifconfig

如图:

LVS 负载均衡集群部署之 DR 模式_第6张图片

b、ipvsadm 安装及策略创建

[root@lvs ~]# yum –y install ipvsadm

[root@lvs ~]# ipvsadm -A -t 192.168.20.135:80 -s lc
[root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.132:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.133:80 -g -w 2

如图:

image

说明:LVS 默认工作模式为 DR 模式,因此,我们在配置策略的时候可以直接写成 [root@lvs ~]#  ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.132:80 -w 1 这样的,也可以使用 –g 参数来指定为 DR 模式。

5、验证,在浏览器中访问 http://192.168.20.135

LVS 负载均衡集群部署之 DR 模式_第7张图片LVS 负载均衡集群部署之 DR 模式_第8张图片

三、服务配置

        当我们的 LVS 服务器重启后,之前配置的 LVS 策略也会随之消失,因此,我们这里需要配置自动启动服务

        [root@lvs ~]# touch /etc/sysconfig/ipvsadm

        [root@lvs ~]# ipvsadm -A -t 192.168.20.135:80 -s lc

        [root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.132:80 -g -w 1
        [root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.133:80 -g -w 2

        [root@lvs ~]# systemctl enable ipvsadm

        [root@lvs ~]# systemctl start ipvsadm

        [root@lvs ~]# systemctl restart ipvsadm

        [root@lvs ~]# cat /etc/sysconfig/ipvsadm

        如图:

        图片.png