lvs-DR数据包流向分析
client向目标VIP发出请求。
DIR根据负载均衡算法一台active的RS(RIR1),将RIP1所在的网卡的mac地址作为目标的mac地址,发送到局域网里。
RIRI在局域网中的收到这个帧,拆开后发现目标(VIP)与本地匹配,于是你就会处理这个报文,随后重新封装报文,发送到局域网。
lvs-DR中ARP问题
1、如何让域名服务器不响应泛洪广播
防止网关路由发送ARP广播时调度器和节点服务都会进行响应导致ARP缓存表混乱,不对非本地物理网卡arp请求进行响应,因为vip是承载lo:0。
总结:为防止网关路由器发送ARP广播时调度器和节点都会进行响应,这会导致ARP缓存表混乱,不对非本地物理网卡的arp请求进行响应,因为VIP时承载lo:o。
命令arp ignore=1。
作用:控制系统在接收到ARP广播请求报文时,是否返回ARP响应报文。
1的作用:只响应目的IP地址接受网卡上的本地的ARP请求。
2、路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效
arp announce =2
系统不使用响应数据包的源IP地址(VIP)来作为本机进行ARP请求报文的源IP地址,而使用发送报文的物理网卡IP地址作为ARP请求报文源IP地址,这样我们就可以防止网关路由器收到的源IP地址为VIP的ARP请求的报文后又更新ARP缓存表,导致外网再发送请求时,到达不了调度器。
注:在节点服务器上配置。
lvs-DR的特性
1、 Director Server和 Real Server必须在同一个物理网络中。
2、Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP进行直接访问。
3、Director Server作为群集的访问入口,但不作为网关使用。
4、所有的请求报文经由Director Server,但回复响应报文不能经过 Director Server。
5、Real Server 的网关不允许指向 Director Server IP,即Real Server发送的数据包不允许经过DirectorServer。
6、 Real Servert上的lo接口配置VIP的IP地址。
优点:
负载均衡器只负责将请求包分给物理服务器,而物理服务器将应答包直接发送给用户。所以负载均衡器能处理很巨大的请求流量,这种方式,一台负载均衡能为超过100m物理服务器服务,负载均衡器不再是系统瓶颈,使用LVS-DR方式,如果你的负载均衡器拥有100M全双工网卡的话。就使用证LVS能达到1G吞吐量,基至更高。
缺点:
所有的调度器和节点服务器在同个广摇域,不支持异地容灾。
实验:
1.配置负载调度器
systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
配置虚拟 IP 地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
ifup ens33:0
调整 proc 响应参数
配置负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.11.180:80 -s rr
ipvsadm -a -t 192.168.11.180:80 -r 192.168.11.33:80 -g
ipvsadm -a -t 192.168.11.180:80 -r 192.168.11.11:80 -g
ipvsadm-save > /etc/sysconfig/ipvsadm
2.配置节点服务器
systemctl stop firewalld.service
setenforce 0
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255
ifup lo:0
route add -host 192.168.10.180 dev lo:0
vim /etc/rc.local
/sbin/route add -host 192.168.10.180 dev lo:0
chmod +x /etc/rc.d/rc.local
调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
vim /etc/sysctl.conf
sysctl -p
yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd
输入数据
mount.nfs 192.168.11.55:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html
mount.nfs 192.168.11.55:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html
测试结果