2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
LVS-DR(Linux Virtual Server - Direct Routing)是Linux虚拟服务器的一种工作模式,常用于实现负载均衡群集。
LVS-DR的工作原理:
Director Server(负载均衡器)作为群集的访问入口,但不作为网关使用。为了响应对整个群集的访问,Director Server与Real Server(真实服务器)都需要配置VIP(虚拟IP地址),且它们需在同一个网络中,返回给客户端的数据不需要经过Director Server。客户端向目标VIP发送请求,负载均衡器接收后,根据负载均衡算法选择后端的真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送。后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理这个报文,随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出,客户端将收到回复报文,且客户端认为得到正常的服务,而不会知道是哪一台服务器处理的。如果跨网段,则报文通过路由器经由互联网返回给用户。
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发送的数据包不允许经过Director Server。
6.Real Server上的lo接口配置VIP的IP地址。
LVS-DR中的ARP问题及解决方法:
在LVS-DR负载均衡集群中,负载均衡器与节点服务器都配置相同的VIP地址,会造成ARP通信紊乱。当ARP广播发送到集群时,负载均衡器和节点服务器都会接收。为解决此问题:
对节点服务器进行处理,使其不响应针对VIP的ARP请求。可使用虚接口lo:0承载VIP地址,并设置内核参数arp_ignore=1,让系统只响应目的IP为本地IP的ARP请求。
Real Server返回报文(源IP是VIP)经路由器转发时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,这可能导致路由器更新ARP表项,使Director的VIP失效。解决方法是对节点服务器进行处理,设置内核参数arp_announce=2,让系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。