1.通过NAT实现负载均衡
运作过程
- 客户端会向一个ip地址发出请求,这个ip地址是一个
VIP
(虚拟IP),这也是调度器向外公布的一个地址。 - 请求达到调度器,调度器会根据负载均衡算法(详情请见8种负载均衡算法)从
RealServer
列表中选取一个负载不高的服务器,然后把请求报文的目标地址,也就是VIP
和端口通过iptables
进行NAT
转换成选中的服务器的真实ip地址。最后,调度器会把其连接保存在一个hash表中,只要这个连接下次再发请求报文过来就会把其分发到上次选定的服务器中。 -
RealServer
收到报文之后,会把响应返回给调度器。 - 调度器收到报文之后,会把源地址和源端口改为虚拟ip和端口,最后再返回给客户端。
特点
1.RealServer
和调度器必须位于一个ip网络之中。
2.调度器位于RealServer
和客户端之间,处理进出的通信。
3.RIP
通常是内部地址,仅用于集群之间通信。
4.RealServer
的网关必须指向调度器。
5.支持端口映射,RealServer
没必要跟调度器一个端口。
限制
响应报文一般比较大,每一次都需要NAT
转换的话,大流量的时候,会导致调度器成为一个瓶颈。
配图
2.通过直接路由实现负载均衡
描述
由于网络请求有一个特点,就是响应报文往往都是比请求报文大很多的,这就会造成上面的nat每次转发收到机器负载的影响,会成为这个请求的一个瓶颈。因此VS/DR
这个方案可以通过直接路由的方式,只转发请求,而相应则由RealServer
去直接响应给客户端,这样可以极高提高吞吐量。
运作过程
- 客户端请求一个
VIP
,这个ip地址就是调度器对外公布的地址。 - 请求到达调度器之后,调度器根据负载算法去调度请求,分发给特定的
RealServer
,调度器不会修改ip和端口,只会mac地址改为把选出的RealServer
的mac地址,RealServer
将会收到对应的报文。 -
RealServer
收到报文之后,发现报文的目标地址VIP
,处理结束之后,会通过路由表将响应返回给客户端。
特点
- 集群节点,
RealServer
和调度器要在同一个物理网络之中。 -
RIP
通常是私有网络,当然也可以是公开网络,方便监控和管理。 - 调度器只负责调度请求,响应会由服务器直接对客户端进行响应。
-
RealServer
不能指向调度器的网关。 - 不支持端口映射。
3. VS/TUN 实现虚拟服务器
描述
由于VS/DR
限制RealServer
和调度器在同一个物理网络,因此无法分散在各地,VS/TUN
就能解决这个问题。
运作过程
1.客户端通过VIP
发送请求,通过一个ip隧道,将一个ip报文封装到另一个ip报文,这样可以让目标为一个ip的地址数据转发到另一个ip地址。
2.调度器根据负载均衡算法去选择一台RealServer
,再把封装后的ip报文发送过去。
3.RealServer
获取到报文之后解封报文,获取到原来目标为VIP
的报文,服务器发现这个VIP
是位于本地的IP隧道中就会处理这个这个请求,并通过路由表去把响应报文直接回复给客户端。
特点
-
RealServer
和调度器必须可以公网访问。 -
RIP
必须是公网地址。 - 调度器只分配和转发请求给
RealServer
,响应报文则由RealSever
直接响应给客户端。 -
RealServer
的网关不能指向调度器。 - 不支持端口映射。