一.DR模式过程
客户机发起请求,经过调度服务器(Lvs),经过算法调度,去访问真实服务器(RS)
由于不原路返回,客户机不知道,真实主机的ip地址,
所以只能通过调度服务器的外网ip (vip)去反回报文信息。
第一次访问完整(不考虑实际问题)
客户端---->外网地址12.0.0.100 12.0.0.100---->客户端
#12.0.0.18-----客户端 客户端会直接丢弃
对每台真实服务器配置外网地址 12.0.0.100
12.0.0.100------>客户端
二.产生的问题和解决方法
问题一:
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播
解决方法
IP 地址冲突的
路由器发送ARP请求(广播)
ARP---->广播去找ip地址解析成mac地址
默认使用调度服务器上的外网地址(vip地址)响应,
在真实服务器上修改内核参数
使真实服务器只对自己服务器上的真实IP地址响应ARP解析
问题二:
对节点服务器进行处理,使其不响应针对VIP的ARP请求
解决方法
使用虚接口lo:0承载VIP地址
设置内核参数arp ignore=1:系统只响应目的IP为本地IP的ARP请求
在真实服务器上修改内核参数
只对所有服务器真实网卡上的地址进行反馈,解析
三.实验过程
1台负载服务器:192.168.133.50
2台真实服务器:192.168.133.75 192.168.133.100
vip(虚拟回环):192.168.133.200
1台客户机 win10
三台机器上都要关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
负载服务器配置
[root@fuzai ~]# cd /etc/sysconfig/network-scripts/
[root@fuzai network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@fuzai network-scripts]# vim ifcfg-ens33:0
[root@fuzai network-scripts]# ifup ifcfg-ens33:0
[root@fuzai ~]# systemctl restart network
[root@fuzai network-scripts]# ifconfig
[root@fuzai ~]# yum install -y ipvsadm*
[root@fuzai ~]# vim /etc/sysctl.conf
在末尾添加以下参数
[root@fuzai ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
加载模块
[root@fuzai ~]# modprobe ip_vs
[root@fuzai ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@fuzai ~]# ipvsadm-save >/etc/sysconfig/ipvsadm
[root@fuzai ~]# systemctl start ipvsadm
[root@fuzai ~]# ipvsadm -C
[root@fuzai ~]# ipvsadm -A -t 192.168.133.200:80 -s rr
[root@fuzai ~]# ipvsadm -a -t 192.168.133.200:80 -r 192.168.133.75:80 -g
[root@fuzai ~]# ipvsadm -a -t 192.168.133.200:80 -r 192.168.133.100:80 -g
[root@fuzai ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.133.200:http rr
-> 192.168.133.75:http Route 1 0 0
-> 192.168.133.100:http Route 1 0 0
[root@fuzai ~]# ipvsadm -ln
[root@fuzai ~]# ipvsadm-save >/etc/sysconfig/ipvsadm
设置真实服务器
[root@rs1 ~]# yum install httpd -y
[root@rs1 ~]# systemctl start httpd
[root@rs1 ~]# ifconfig lo:0 192.168.133.200 netmask 255.255.255.255 如果临时加不能网卡restart
[root@rs1 ~]# ifconfig
增加路由
[root@rs1 ~]# route add -host 192.168.133.200 dev lo:0
[root@rs1 ~]# route -n
[root@rs1 ~]# vim /etc/sysctl.conf
末尾加入以下命令
[root@rs2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@rs1 ~]# vim /var/www/html/index.html
[root@rs2 ~]# vim /var/www/html/index.html
开启客户机
开启客户机
过几分钟刷新后就变成