LVS(Linux虚拟服务器)-不同的负载平衡方法
随着Internet用户的增长,基于Web的处理的通信量急剧增加。
有不同的解决方案来应对这种不断增长的流量。
一种解决方案是垂直扩展服务器(即:简单地向服务器添加更多的CPU和内存资源。
)当然在一定程度上是无法完成的。
另一个解决方案是水平扩展服务器(即:添加更多可以应对流量激增的服务器。
)。
这种机制通常称为集群。
在集群中,多台服务器作为单个组件共同作用,向最终用户提供所需的服务。
当流量/负载增加时,我们可以简单地将更多服务器添加到群集中,因此它具有更高的可扩展性。
在本文中,我们将重点介绍可用于Linux虚拟服务器(LVS)的不同方法和方案。
LVS是一个开源项目,始于1998年,其主要重点是使用由商用硬件组成的集群来构建高可用性和负载平衡解决方案。
步骤1:用户(183.83.214.214)向分配给负载均衡器(212.71.233.103)的VIP发送对所需服务的请求。
该请求如下所示。
源地址(183.83.214.214)------->目的地地址(212.71.233.103)
步骤2:负载平衡器在收到请求后,检查请求目的地和端口。
如果请求与负载均衡器配置中定义的特定服务匹配,则使用选择算法从池中选择一个真实服务器(在我们的示例中,我们有两个真实服务器)。
一旦选择了Real Server,负载均衡器会将连接信息和所选的Real Server记录在表中,然后修改数据包的目标地址和端口(为Real Server的地址和端口),并将数据包转发到Real Server。
让我们考虑选择的Real服务器是10.1.10.1,在这种情况下,转发数据包的源和目的地将如下所示。
源地址(183.83.214.214)------->目的地地址(10.1.10.1)
当负载均衡器在选择Real服务器后记下连接信息(在表中)时,来自同一连接的后续数据包将简单地用已选择的real服务器目标地址(可从表中找到)进行重写。
步骤3:当负载均衡器从Real Server获得响应数据包时,它将再次将源地址和端口重写为其自己的虚拟IP和服务端口的源地址和端口。
然后,它将响应发送回用户。
源地址(212.71.233.103)------->目的地地址(183.83.214.214)
最终用户永远不会意识到后面的Real Server。
用户始终认为实际响应是由负载均衡器的虚拟IP地址创建和传递的。
通过NAT进行LVS的主要优点是Real Server可以运行任何操作系统,并且仅使用一个IP地址。
通过nat进行LVS的缺点是,负载均衡器将目标地址重写两次,以完成单个请求。
由于这种重写,如果请求数量很高,则负载平衡器可能会耗尽资源。
如果后端真实服务器的数量更多,情况将变得更糟。
什么是LVS VIA IP隧道?
与通过NAT的LVS相比,通过IP隧道的LVS是更好的可扩展解决方案。
这是由于两个主要原因。
- 负载平衡器不会对IP数据包进行多次重写。
- 实际响应永远不会通过负载均衡器发送。
在这种方法中,虚拟IP也由负载均衡器和真实服务器分配和共享。
如上一节所述,虚拟IP地址被分配给不响应ARP请求的接口(这在此方法中非常重要,因为负载均衡器和Real服务器都位于同一物理段中。
)
步骤1:与往常一样,客户端将请求发送到负载均衡器上分配的虚拟IP。
负载平衡器检查该请求,如果找到类似的服务配置,则它将仅将数据包转发到选定的虚拟服务器。
与其他方法相似,负载均衡器也建立了一个连接,因此,只需查看表,就可以将来自同一连接的后续数据包转发到相同的Real服务器。
好吧,负载平衡器修改的唯一内容是mac地址。
一旦使用选择/调度算法选择了Real Server,它将使用Real Server的mac地址简单地修改帧,并在LAN上转发帧。
这是使用此方法将Load Balancer和Real服务器需要位于同一LAN网段上的主要原因。
步骤2:由于Real服务器在其非arp接口之一上配置了相同的虚拟IP地址,因此它接受数据包并进行处理。
然后将响应直接发送回客户端。
这种方法的主要优点是所涉及的开销非常少。
唯一的缺点是Real Servers和Load Balancer需要相同的LAN网段。
Linux虚拟服务器中不同负载平衡方案的摘要
LVS的类型 | LVS通过NAT | LVS通过IP隧道 | LVS通过直接路由 |
---|---|---|---|
优点 | 支持任何操作系统的真实服务器 单个IP是必需的 | 由于较少重写IP数据包 | 它没有IP隧道的开销 它没有数据包重写 |
配置 | 虚拟服务器端不需要特殊配置。 | 实际服务器还必须支持IP隧道 虚拟IP必须是配置在非ARP接口 | 必须在非ARP接口(大多数环回)上分配虚拟IP |
可伸缩性 | 少, 由于重写开销 | 高 | 高 |