LVS 所提供的 IP 负载均衡的三种技术
Posted 小鸟云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS 所提供的 IP 负载均衡的三种技术相关的知识,希望对你有一定的参考价值。
1.LVS和负载均衡简介:
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
负载均衡就是有两台或者以上的服务器或者站点为我们提供服务,我们将来自客户端的请求靠某种算法尽量平均分摊到这些集群中,从而避免一台服务器因为负载太高而出现故障。简而言之便是将所有的负载均分到多台服务器中,即使其中某个出现故障,用户也能正常访问,得到服务。
广泛使用的是用软件的方式来实现负载均衡,实现效果不错,并且不需要成本是很多企业选择的方式。
以软件实现的负载均衡有两种方式:
基于应用层负载均衡
基于IP层负载均衡
文章主要就是介绍基于IP层负载均衡;
2.基于 IP 层负载均衡:
而 IP 的负载技术有以下三种模式:
通过NAT实现虚拟服务器(VS/NAT)
通过IP隧道实现虚拟服务器(VS/TUN)
通过直接路由实现虚拟服务器(VS/DR)
3.VS/NAT 实现虚拟服务器
VS/NAT(Virtual Server via Network Address Translation)实现的虚拟服务器是这样的一个结构,主要经过这样的一些步骤:
LVS-NAT
Real Server 接收到报文之后,做出了响应的处理,然后将响应的报文发送给 Load Balancer;
这样,客户所看到的只是在 Virtual IP Address 上提供的服务,而服务器集群的结构对用户是透明的。
下面,举个例子来进一步说明VS/NAT,如图所示:
NAT-eg
Protocol |
Virtual IP Address |
Port |
Real IP Address |
Port |
---|---|---|---|---|
TCP |
205.100.106.2 |
80 |
172.16.1.3 |
80 |
172.16.1.4 |
8080 |
|||
TCP |
205.100.106.2 |
21 |
172.16.1.3 |
21 |
SOURCE |
DEST |
---|---|
203.100.106.1:3456 |
205.100.106.2:80 |
SOURCE |
DEST |
---|---|
203.100.106.1:3456 |
172.16.1.4:8080 |
Real Server 收到修改后的报文之后,做出响应,然后将响应报文返回到调度器,报文如下:
SOURCE |
DEST |
---|---|
172.16.1.4:8080 |
203.100.106.1:3456 |
SOURCE |
DEST |
---|---|
205.100.106.2:80 |
203.100.106.1:3456 |
这样,客户认为是从202.103.106.5:80服务得到正确的响应,而不会知道该请求是 Real Server1 还是 Real Server2 处理的。
这便是 VS/NAT 的处理数据包的整个过程,它有这样的一些特点:
集群节点,也就是 Real Server 与 Load Balacer 必须在同一个 IP 网络中
Load Balancer 位于 Real Server 与客户端之间,处理进出的所有通信
Real Server 的网关必须指向 Load Balancer
支持端口映射:也就是Real Server 的端口可以自己设定,没有必须是与 Load Balancer 一样
VS/NAT 的优势在于可以做到端口映射,但是 Load Balancer 将可能成为集群的瓶颈。因为所有的出入报文都需要 Load Balancer 处理,请求报文较小不是问题,但是响应报文往往较大,都需要 NAT 转换的话,大流量的时候,Load Balancer 将会处理不过来。一般使用 VS/NAT 的话,处理 Real Server 数量达到 10~20 台左右将是极限,并且效率往往不高。
4.VS/DR 实现虚拟服务器
在VS/NAT 的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。大多数 Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。
既然同时处理进出报文会大大的影响效率,增加机器的负载,那么若是仅仅处理进来的报文,即在负载调度器中只负责调度请求,而出去的报文由 Real Server 直接发给客户端这样岂不是高效许多。
VS/DR(Virtual Server via Direct Routing)利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群 系统的吞吐量。
VS/DR 实现的虚拟服务器是这样的一个结构,主要经过这样的一些步骤:
DR-sturct
change-MAC
这便是 VS/DR 的处理数据包的整个过程,它有这样的一些特点:
集群节点,也就是 Real Server 与 Load Balacer 必须在同一个物理网络中(若是不同网段的话结构将变得复杂)
Load Balancer 仅仅负责处理入站的请求,Real Server 将直接响应客户端
Real Server 的网关不能指向 Load Balancer
不支持端口映射:也就是Real Server 的端口必须是与 Load Balancer 对外服务的一样
5.VS/TUN 实现虚拟服务器
VS/DR 限制 Real Server 与 Load Balancer 必须在同一个物理网络中,那若是分散在各地岂不是无法使用?所以有了 VS/TUN(Virtual Server via IP Tunneling)的诞生。
Tunnel-sturct
这便是 VS/TUN 的处理数据包的整个过程,它有这样的一些特点:
集群节点,也就是 Real Server 与 Load Balacer 可以跨越公网
Load Balancer 仅仅负责处理入站的请求,Real Server 将直接响应客户端
Real Server 的网关不能指向 Load Balancer
不支持端口映射:也就是Real Server 的端口必须是与 Load Balancer 对外服务的一样
这便是 LVS 所提供的 IP 负载均衡的三种技术,我们可以根据自己的情况做出不同的选择。
点击下方参与小鸟云【血战11.11】活动 。
以上是关于LVS 所提供的 IP 负载均衡的三种技术的主要内容,如果未能解决你的问题,请参考以下文章