NAT路由
下图说明了利用NAT路由在Internet和专用网络之间移动请求的负载均衡。
活动的LVS路由器有连个NIC。Internet的NIC在eth0上具有真实IP地址和浮动IP地址。专用网络接口的NIC在eth1上具有真实IP地址和浮动IP地址。专用网络接口的NIC在eth1上具有真实IP地址和浮动IP地址。在故障转移的情况下,面向Internet的虚拟接口和面向私有的虚拟接口同时由备用LVS路由器接管。位于专用网络上的所有真实服务器都是用NAT路由的浮动IP作为与活动LVS路由器通信的默认路由,以便他们响应来自Internet的请求的能力不受损害。
LVS路由器的公共浮动IP地址和专用NAT浮动IP地址被分配给物理NIC。虽然可以将每个浮动IP地址与LVS路由器节点上的自己的物理设备相关联,不要求具有两个以上NIC。
活动LVS路由器接收请求并将其路由到适当的服务器。然后,真是服务器处理该请求并将数据包返回到LVS路由器,该路由器使用网络地址转换来用LVS路由器的公共VIP地址替换数据包中的真实服务器的地址。此过程称为IP伪装,因为真实服务器的实际IP地址对请求客户端是隐藏的。
使用此NAT路由,真实服务器可以是运行各种操作系统的任何类型的机器。主要缺点是LVS路由器可能成为大型集群的瓶颈,因为它必须处理传入和传出请求。
这些ipvs
模块使用自己的内部NAT例程,这些例程独立于iptables
和ip6tables
NAT。当真实服务器配置为NAT而不是/etc/keepalived/keepalived.conf
文件中的DR时。浙江有助于IPv4和IPv6NAT。
直接路由
与其他Load Balancer网络相比,构建使用直接路由的负载均衡器设置可提供;那个更高的性能优势。直接路由允许真实服务器直接处理和路由数据包到请求用户,而不是通过LVS路由器传递所有的数据包。直接通过路由器将LVS路由器的作业降级为仅处理传入的数据包来减低网络性能问题的可能性。
典型的直接路由负载均衡设置中,LVS路由器通过虚拟IP接收传入服务器请求,并使用调度算法将请求路由到真实服务器。真实服务器处理请求并将相应直接发送到客户端,绕过LVS路由器。这种路由方法允许可扩展。因为可以添加真实服务器而不会增加LVS路由器的负担,以将输出数据包从真实服务器路由到客户端,这可能成为网络负载过重的瓶颈。
直接路由的ARP限制
似然子啊Load Balancer中使用直接路由有许多优点,但也存在限制,Load Balancer通过直接路由的最常见问题是ARP。
典型情况下,Internet上的客户端向IP地址发送请求。网络路由器通常通过使用ARP将IP地址与机器的MAC地址相关联来向其目的地发送请求。ARP请求被广播到网络上的所有连接的机器,具有正确的IP/MAC地址组合的机器接受该数据包。IP/MAC关联存储在ARP缓存中,该缓存会定期清除并重新填充IP/MAC关联。
直接路由Load Balancer设置中的ARP请求问题是,因为客户端对IP地址的请求必须与要处理的请求的MAC地址相关联,所以LoadBalancer系统的虚拟IP地址也必须与MAC也是如此。但是,由于LVS路由器的真实服务器都具有相同的VIP,因此ARP请求将被广播到与 VIP相关联的所有机器。这将导致一些问题,例如VIP直接与其中一个真实服务器关联并处理请求,完全绕过LVS路由并且无法实现LoadBalancer的目的。
要解决此问题。请确保始终将传入请求发送到LVS路由器而不是其中的一个真实服务器。这可以通过过滤ARP请求或过滤IP数据包来完成。可以使用arptables
完成ARP过滤,并且可以使用iptables
或firewalld
实现IP数据包的过滤。
这两种方法不同之处在于:
- ARP过滤方法阻止到达真实服务器的请求。这可以防止ARP将VIP与真实服务器关联,从而使活动虚拟服务器以MAC地址进行相应。
- IP包过滤方法允许将包路由到具有其他IP地址的真实服务器上。这完全避免了ARP问题。