虚拟服务器LVS如何工作
现在,虚拟服务器以三种方式实现。LinuxDirector 中有三种 IP 负载平衡技术(数据包转发方法)。它们是通过 NAT 的虚拟服务器、通过 IP 隧道的虚拟服务器和通过直接路由的虚拟服务器。请参阅三个单独的部分,了解它们的工作原理和配置。如何构建内核以及如何使用它们也在那里进行了详细的解释。
- 通过 NAT 的虚拟服务器
- 通过 IP 隧道的虚拟服务器
- 通过直接路由的虚拟服务器
以下小节将解释它们的优点和缺点。下表总结了 VS/NAT、VS/TUN 和 VS/DR 的比较。
VS/NAT | VS/TUN | VS/DR | |
服务器 | 任何 | 隧道 | 非振奋设备 |
服务器网络 | 私人 | 局域网/广域网 | 局域网 |
服务器编号 | 低 (10~20) | 高 | 高 |
服务器网关 | 负载均衡器 | 自己的路由器 | 自己的路由器 |
通过 NAT 的虚拟服务器
通过 NAT 虚拟服务器的优点是,真实服务器可以运行任何支持 TCP/IP 协议的操作系统,真实服务器可以使用专用 Internet 地址,负载均衡器只需要一个 IP 地址。
缺点是虚拟服务器通过 NAT 的可伸缩性受到限制。当服务器节点(一般PC服务器)的数量增加到20个左右或更多时,负载平衡器可能是整个系统的瓶颈,因为请求数据包和响应数据包都需要由负载平衡器重写。假设 TCP 数据包的平均长度为 536 字节,重写数据包的平均延迟约为 60us(在奔腾处理器上,这可以通过使用更高的处理器来减少一点),负载平衡器的******吞吐量为 8.93 MB/s。假设真实服务器的平均吞吐量为 400KB/s,负载平衡器可以计划 22 台真实服务器。
通过NAT的虚拟服务器可以满足许多服务器的性能要求。即使负载平衡器正在成为整个系统的瓶颈,也有两种方法可以解决它,一种是通过混合方法,另一种是通过IP隧道的虚拟服务器或通过直接路由的虚拟服务器。在 DNS 混合方法中,有许多负载均衡器都有自己的服务器集群,负载均衡器按 Round-Round DNS 分组为单个域名。您可以尝试使用VS隧道或VS-DRouting以获得良好的可扩展性,也可以尝试嵌套VS负载均衡器方法,第一个前端是VS隧道或VS-DRouting负载均衡器,第二层是许多VS-NAT负载均衡器,它们都有自己的集群。
通过 IP 隧道的虚拟服务器
在通过NAT的虚拟服务器中,请求和响应数据包都需要通过负载均衡器,当服务器节点数量增加到20个或更多时,负载均衡器可能会成为新的瓶颈,因为网络接口的吞吐量最终会受到限制。我们从许多互联网服务(如Web服务)中可以看出,请求数据包通常很短,响应数据包通常具有大量数据。
在通过 IP 隧道的虚拟服务器中,负载均衡器只是将请求调度到不同的真实服务器,而真实服务器则直接向用户返回回复。因此,负载均衡器可以处理大量请求,它可以调度超过100个真实服务器,并且不会成为系统的瓶颈。:-)因此,使用 IP 隧道将大大增加负载平衡器的******服务器节点数。虚拟服务器的******吞吐量可以达到 1Gbps 以上,即使负载平衡器只有 100Mbps 的全双工网络适配器也是如此。
IP 隧道功能可用于构建性能非常高的虚拟服务器。构建虚拟代理服务器非常好,因为当代理服务器收到请求时,它可以直接访问Internet以获取对象并将其直接返回给用户。
但是,所有服务器都必须启用"IP隧道"(IP封装)协议,我刚刚在Linux IP隧道上对其进行了测试。如果您使虚拟服务器在运行具有IP隧道的其他操作系统的服务器上工作。
通过直接路由的虚拟服务器
与通过隧道方法的虚拟服务器一样,LinuxDirector 仅通过直接路由处理虚拟服务器中连接的客户端到服务器的一半,并且响应数据包可以遵循到客户端的单独网络路由。这可以大大提高虚拟服务器的可伸缩性。
与通过 IP 隧道方法的虚拟服务器相比,此方法没有隧道开销(实际上,在大多数情况下,此开销是最小的),但要求负载平衡器的接口之一和真实服务器的接口必须位于同一物理段中。