LVS-DR 工作原理
客户端把数据包发送到调度器,到达内核空间,给ipvives处理,当调度器确定好发给哪个节点的时候,将mac地址重新封装,通过数据链路层发送给节点服务器。节点服务器看ip地址没问题,就进行解封装处理,根据TCP头部理端口mac地址发送给客户端。
节点服务器 发送 响应报文给客户端
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发送的数据包部不允许经过Director Server (RS的网关地址只能指定真实的路由器网关)
6.Real Server 上的 lo 接口配置VIP的IP地址
LVS-DR中的ARP问题
VIP地址相同导致响应冲突
在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地 址,势必会造成各服务器ARP通信的紊乱。
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会收到ARP广播。
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。
解决方案
对节点服务器进行处理,使其不响应针对VIP的ARP请求
使用虚接口lo:0承载VIP地址
设置内核参数 arp_ ignore=1:系统只响应目的IP为本地IP(物理网卡的地址,而不是lo网卡的虚接口地址)的ARP请求。
返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱
问题原因:
RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址。
路由器收到ARP请求后,将更新ARP表项。原有的VIP对应Director的MAC地址,会被更新为VIP对应的Real Server的MAC地址。导致网关设备的ARP缓存表紊乱。
路由器根据ARP表项,会将新来的请求报文转发给Real Server,导致Director的VIP失效。
解决方法:
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP数据包的源地址来设置ARP请求的源地址,而选择发送接口(物理网卡)的IP地址
调度器配置
1.配置 ens33:0 为VIP
2.调整内核参数(关闭路由转发,icmp重定向)
3.安装启动 iptables
节点服务器配置
安装web应用服务器
挂载 nfs共享 目录
配置Ln:0为VIP
配置VIP的路由
配置内核参数
物理网卡的默认
DR模式 LVS负载均衡集群部署
DR 服务器:192.168.100.101
Web 服务器1:192.168.100.40
Web 服务器2:192.168.100.50
vip:192.168.100.100
NFS服务器:192.168.100.20
客户端:192.168.100.30
DR服务器 1.配置负载调度器
(1)配置虚拟 IP 地址
(2)调整 proc 响应参数
(3)配置负载分配策略
2.部署共享存储
部署第一台web节点服务器
1.安装httpd,开启服务
2.配置虚拟IP地址(VIP:192.168.100.100),添加虚接口lo:0。
3、添加静态路由信息,dev指定出站网卡
4、调整内核的ARP响应参数
5.挂载站点,将NFS服务器
第二台web节点服务器
1.关闭防火墙
2.安装httpd,开启服务
3.配置虚拟IP,添加虚拟网口
4、添加静态路由信息,dev指定出站网卡
5、调整内核的ARP响应参数