LVS(二)LVS集群中实现的三种负载均衡技术
LVS集群中实现的三种负载均衡技术
LVS集群中实现的负载均衡技术有VS/NAT、VS/TUN、VS/DR三种。
VIP | Virtual Server IP | 向外部直接面向用户请求,作为用户请求的目标的IP地址。 |
DIP | Director Server IP | 主要用于和内部主机通讯的IP地址。 |
RIP | Real Server IP | 后端服务器的IP地址。 |
CIP | Client IP | 访问服务器的客户端IP地址。 |
DS | Director Server | 前端负载均衡器节点。 |
RS | Real Server | 后端真实的工作服务器。 |
1.地址转换 VS/NAT (Virtual Server via Network Address Translation)
网络地址转换(Network Address Translation)模式是通过网络地址转换将一组服务器构成一个高性能的、高可用的虚拟服务器。
通过网络地址转换,工作在input链上的ipvs调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
整请求个过程如上图
1 用户请求报文【CIP(源IP)VIP(目标IP)】先到达Director Server上的prerouting链上。
2 prerouting链将请求报文发送至input链。
3 工作在input链上的ipvs调度器首先会检查请求报文是否请求本机,如是本机则将请求发送至工作在用户空间的web服务。
4 如果请求不是本机,而是一个集群服务,则工作在input链上的ipvs调度器根据调度规则选择一个Real Server(例如选择的是Real Server Two),并重写请求报文【CIP(源IP)RIP2(目标IP)】,并发送至postrouting链。
5 postrouting通过检查修改过的请求报文【CIP(源IP)RIP2(目标IP)】,发现请求主机为Real Server Two ,则将请求报文发送至Real Server Two 服务器。
整响应个过程如上图
1 Real Server Two将响应报文【RIP2(源IP)CIP(目标IP)】发送至Director Server的postrouting链。
2 postrouting链将响应报文发送至input链,工作在input链上的ipvs调度器重写响应报文【VIP(源IP)CIP(目标IP)】,响应给客户端。
NAT模式的基本性质
(1)集群节点跟Director必须在同一个IP网络中。
(2)RIP通常是私有地址,仅用于各集群节点间的通信。
(3)Director 位于client和real server之间,并负责处理进出的所有通信
(4)realserver必须将网关指向DIP
(5)支持端口映射
(6)任何类型的操作系统都可用作realserver
(7)较大规模一个用场景中,director易成为系统瓶颈
2.隧道 VS/TUN(Virtual Server via IP Tunneling)
通过IP隧道实现虚拟服务器
整个请求响应过程如上图红线所示
1 用户请求报文【CIP(源IP)VIP(目标IP)】先到达Director Server上的prerouting链上。
2 prerouting链将请求报文发送至input链。
3 工作在input链上的ipvs调度器首先会检查请求报文是否请求本机,如是本机则将请求发送至工作在用户空间的web服务。
4 如果请求不是本机,而是一个集群服务,则工作在input链上的ipvs调度器根据调度规则选择一个Real Server(例如选择的是Real Server One),并重写请求报文,在请求报文的首部再封装一层IP报文。【CIP(源IP)VIP(目标IP) DIP(源IP) RIP(目标IP)】,并发送至postrouting链。
5 postrouting通过检查封装过的请求报文,发现请求主机为Real Server Two ,则将请求报文发送至Real Server One 服务器。
6.Real Server One接收到报文后,对IP进行解析,拆除掉最外层的IP后,发现里面还有一层IP首部,而且目标是自己的lo接口VIP,此时Real Server One开始处理此请求,处理完成之后,将响应报文【VIP(源IP)CIP(目标IP)】发送给客户端。(响应客户端请求的时候,隐藏的VIP当作源地址使用。真正通信的网卡是RIP所在的网络设备eth0)
TUN模式的基本性质
(1)集群节点可以跨越互联网
(2)RIP必须是公网地址
(3)Director只负责处理入站请求,响应报文则由realserver直接发往客户端。
(4)realserver不能将网关指向DIP
(5)Director不支持端口映射
(6)只有支持隧道OS才能用于realserver
3.直接路由 VS/DR(Virtual Server via Direct Routing)
通过直接路由实现虚拟服务器
整个请求过程如上图红线所示
1 客户端请求报文【CIP(源IP)VIP(目标IP) CMAC(原MAC) VMAC(目标MAC)】发送至路由器,路由器将请求报文封装成帧发送至交换机,然后通过ARP地址解析由交换机发送到Director主机内核的prerouting链上(所有Real Server的vip配置在网卡别名上,并隐藏,所以在广播的时候,只有Director响应),接着prerouting链转发至input链。
2 工作在input链上的ipvs调度器首先会检查请求报文是否请求本机,如是本机则将请求发送至工作在用户空间的web服务。
3 如果请求不是本机,而是一个集群服务,则工作在input链上的ipvs调度器根据调度规则选择一个Real Server(例如选择的是Real Server Two),并重写请求报文【CIP(源IP)VIP(目标IP) DMAC(原MAC) RMAC(目标MAC)】,并发送至postrouting链。
4 然后postrouting将报文发送至交换机,交换机将请求报文发送至Real Server Two。
整个响应过程如上图深色蓝线所示
1 Real Server Two将响应报文【VIP(源IP)CIP(目标IP) VMAC(原MAC) CMAC(目标MAC)】发送至交换机,然后响应给客户端。(响应客户端请求的时候,隐藏的VIP当作源地址使用。真正通信的网卡是RIP所在的网络设备eth0)
DR模式的基本性质
(1)集群节点跟Director必须在同一个物理网络中。
(2)RIP可以使用公网地址,实现便捷的远程管理和监控。
(3)Director只负责处理入站请求,响应报文则由realserver直接发往客户端。
(4)realserver不能将网关指向DIP
(5)Director不支持端口映射(请求端口,响应端口)
(6)大多数类型的操作系统都可用作realserver(隐藏VIP)
(7)能比NET模型处理多的多的realserver
4.三种方法的优缺点
Model | VS/NAT | VS/TUN | VS/DR |
Server | any | Tunneling | Non-arp device |
Server Network | private | LAN/WAN | LAN |
Server Number | low (10~20) | High (100) | High (100) |
Server Gateway | load balancer | own router | Own router |
Virtual Server via NAT
VS/NAT 的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限, 当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。
基于 VS/NAT的的集群系统可以适合许多服务器的性能要求。如果负载调度器成为系统新的瓶颈,可以有三种方法解决这个问题:混合方法、VS/TUN和 VS/DR。
Virtual Server via IP Tunneling
在VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有100Mbps的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。所以,VS/TUN可以极大地增加负载调度器调度的服务器数量。VS/TUN调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以 用来构建高性能的超级服务器。
VS/TUN技术对服务器有要求,即所有的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。目前,VS/TUN的后端服务器主要运行Linux操作系统,我们没对其他操作系统进行测试。因为“IP Tunneling”正成为各个操作系统的标准协议,所以VS/TUN应该会适用运行其他操作系统的后端服务器。
Virtual Server via Direct Routing
跟VS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。
跟VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上。