LVS负载均衡之DR模式
一、LVS-DR数据包流量分析
客户端向目标VIP发送请求,负载均衡器接收
负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送
后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理这个报文。随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出
客户端将收到回复报文。客户端认为得到正常的服务,而不会知道是哪一台服务器处理的
如果跨网段,则报文通过路由器经由 internet 返回给用户
二、LVS-DR中的ARP问题
在LVS-DR负载均衡集样中,负载均衡与节点服务器都要配置相同的VIP地址。
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。
对节点服务器进行处理,使其不响应针对VIP的ARP请求。
使用虚接口 lo:0 承载VIP地址设置内核参数 arp_ignore=1:系统只响应目的IP为本地 IP 的ARP请求
RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址如:ens33
路由器收到ARP请求后,将更新ARP表项
原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址
路由器根据ARP表项,会将新来的请求报文转发给Realserver,导致Director的VIP失效
LVS-DR 负载均衡群集的部署
实验环境:
DR服务器:192.168.192.10/24
两台WEB服务器:192.168.192.11/24,192.168.192.12/24
VIP:192.168.192.20/32
NFS服务器:192.168.192.14/24
客户端:192.168.192.15/24
3.1 部署共享服务(NFS服务器:192.168.192.14)
NFS服务器的具体部署过程在上一篇文章中有详细步骤,可查看上一篇文章 (LVS负载均衡群集-----NAT模式实操),这里不再赘述。
#1、关闭防火墙
[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# setenforce 0
#2、安装nfs-utils、rpcbind软件包
[root@localhost ~]# yum install nfs-utils rpcbind -y
#3、新建共享目录,并创建站点文件
[root@localhost ~]# mkdir /share/
[root@localhost ~]# cd /share/
[root@localhost share]# mkdir boy man
[root@localhost share]# echo "wz is a boy" > boy/index.html
[root@localhost share]# echo "wz is a man" > man/index.html
#4、修改共享配置文件,设置共享策略
[root@localhost share]# pwd
/share
[root@localhost share]# vim /etc/exports //设置共享策略
/s