lvs集群的体系结构 2、lvs主要组成部分为:
负载调度器(load balancer/ director),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个ip地址(我们可称之为虚拟ip地址)上的。
服务器池(server pool/ realserver),是一组真正执行客户请求的服务器,执行的服务一般有web、mail、ftp和dns等。
共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。 3、lvs负载均衡方式: virtual server via network address translation nat(vs/nat)
vs/nat是一种最简单的方式,所有的realserver只需要将自己的网关指向director即可。客户端可以是任意操作系统,但此方式下,一个director能够带动的realserver比较有限。在vs/nat的方式下,director也可以兼为一台realserver。vs/nat的体系结构如图所示。
vs/nat的体系结构 virtual server via ip tunneling(vs/tun)
ip隧道(ip tunneling)是将一个ip报文封装在另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文能被封装和转发到另一个ip地址。ip隧道技术亦称为ip封装技术(ip encapsulation)。ip隧道主要用于移动主机和虚拟私有网络(virtual private network),在其中隧道都是静态建立的,隧道一端有一个ip地址,另一端也有唯一的ip地址。它的连接调度和管理与vs/nat中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个ip报文中,再将封装后的ip报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为 vip 的报文,服务器发现vip地址被配置在本地的ip隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。
vs/tun的体系结构 vs/tun的工作流程:
virtual server via direct routing(vs/dr)
vs/dr方式是通过改写请求报文中的mac地址部分来实现的。director和realserver必需在物理上有一个网卡通过不间断的局域网相连。 realserver上绑定的vip配置在各自non-arp的网络设备上(如lo或tunl),director的vip地址对外可见,而realserver的vip对外是不可见的。realserver的地址即可以是内部地址,也可以是真实地址。
vs/dr的工作流程 4、三种负载均衡方式比较: virtual server via nat
vs/nat 的优点是服务器可以运行任何支持tcp/ip的操作系统,它只需要一个ip地址配置在调度器上,服务器组可以用私有的ip地址。缺点是它的伸缩能力有限,当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在vs/nat中请求和响应报文都需要通过负载调度器。我们在pentium166 处理器的主机上测得重写报文的平均延时为60us,性能更高的处理器上延时会短一些。假设tcp报文的平均长度为536 bytes,则调度器的最大吞吐量为8.93 mbytes/s. 我们再假设每台服务器的吞吐量为800kbytes/s,这样一个调度器可以带动10台服务器。(注:这是很早以前测得的数据)
基于 vs/nat的的集群系统可以适合许多服务器的性能要求。如果负载调度器成为系统新的瓶颈,可以有三种方法解决这个问题:混合方法、vs/tun和 vs/dr。在dns混合集群系统中,有若干个vs/nat负调度器,每个负载调度器带自己的服务器集群,同时这些负载调度器又通过rr-dns组成简单的域名。
但vs/tun和vs/dr是提高系统吞吐量的更好方法。
对于那些将ip地址或者端口号在报文数据中传送的网络服务,需要编写相应的应用模块来转换报文数据中的ip地址或者端口号。这会带来实现的工作量,同时应用模块检查报文的开销会降低系统的吞吐率。 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端口上。 三种lvs负载均衡技术的优缺点归纳以下表: