Version:1.0
111
Linux 负载均衡
随着计算机技术的发展和越来越广泛的应用,越来越多的依赖于计算机技术的
应用系统走进了我们的工作和生活。在给我们带来方便和效率的同时,也使得各行
各业对于计算机技术的依赖程度越来越高。尽管随着计算机技术以日新月异的速度
发展,单台计算机的性能和可靠性越来越好,但还是有许多现实的要求是单台计算
机难以达到的。为了满足日益膨胀的需求,计算机应用中引入了集群技术。
本章目标:
学习完本章你将能够
¾ 了解集群的优点
¾ 理解 LVS 的工作原理
¾ 使用 LVS 搭建企业集群服务器
1. 集群技术简介
1.1 为什么要集群
当今计算机技术已进入以网络为中心的计算时期。由于客户/服务器模型的简单
性、易管理性和易维护性,客户/服务器计算模式在网上被大量采用。在九十年代中
期,万维网(World Wide Web)的出现以其简单操作方式将图文并茂的网上信息带
给普通大众,Web 也正在从一种内容发送机制成为一种服务平台,大量的服务和应
用(如新闻服务、网上银行、电子商务等)都是围绕着 Web 进行。这促进 Internet
用户剧烈增长和 Internet 流量爆炸式地增长。
Internet 的飞速发展给网络带宽和服务器带来巨大的挑战。从网络技术的发展来
看,网络带宽的增长远高于处理器速度和内存访问速度的增长,如 100M Ethernet、
ATM、Gigabit Ethernet 等不断地涌现,10Gigabit Ethernet 即将就绪,在主干网上密
集波分复用(DWDM)将成为宽带 IP 的主流技术。所以,我们深信越来越多的瓶颈
会出现在服务器端。很多研究显示 Gigabit Ethernet 在服务器上很难使得其吞吐率达
到 1Gb/s 的原因是协议栈(TCP/IP)和操作系统的低效,以及处理器的低效,这需
要对协议的处理方法、操作系统的调度和 IO 的处理作更深入的研究。
大部分网站都需要提供每天 24 小时、每星期 7 天的服务,对电子商务等网站尤
为突出,任何服务中断和关键性的数据丢失都会造成直接的商业损失。
现在 Web 服务中越来越多地使用 CGI、动态主页等 CPU 密集型应用,这对服
务器的性能有较高要求。未来的网络服务会提供更丰富的内容、更好的交互性、更
高的安全性等,需要服务器具有更强的 CPU 和 I/O 处理能力。例如,通过 HTTPS
(Secure HTTP)取一个静态页面需要的处理性能比通过 HTTP 的高一个数量级,
HTTPS 正在被电子商务站点广为使用。所以,网络流量并不能说明全部问题,要考
虑到应用本身的发展也需要越来越强的处理性能。
因此,对用硬件和软件方法实现高可伸缩、高可用网络服务的需求不断增长,
这种需求可以归结以下几点:
¾ 可伸缩性(Scalability),当服务的负载增长时,系统能被扩展来满足需求,且不降
低服务质量。
¾ 高可用性(Availability),尽管部分硬件和软件会发生故障,整个系统的服务必须
是每天 24 小时每星期 7 天可用的。
¾ 可管理性(Manageability),整个系统可能在物理上很大,但应该容易管理。
¾ 价格有效性(Cost-effectiveness),整个系统实现是经济的、易支付的。
要解决上述几个需求,靠单个的服务器不能满足需求,因此,只能使用多台服
务器联合工作以达到需求,这就是所谓的集群。
1.2 服务器集群优点
对称多处理(Symmetric Multi-Processor,简称 SMP)是由多个对称的处理器、
和通过总线共享的内存和 I/O 部件所组成的计算机系统。SMP 是一种低并行度的结
构,是我们通常所说的“紧耦合多处理系统”,它的可扩展能力有限,但 SMP 的优
点是单一系统映像(Single System Image),有共享的内存和 I/O,易编程。
由于 SMP 的可扩展能力有限,SMP 服务器显然不能满足高可伸缩、高可用网
络服务中的负载处理能力不断增长需求。随着负载不断增长,会导致服务器不断地
升级。这种服务器升级有下列不足:一是升级过程繁琐,机器切换会使服务暂时中
断,并造成原有计算资源的浪费;二是越往高端的服务器,所花费的代价越大;三
是 SMP 服务器是单一故障点(Single Point of Failure),一旦该服务器或应用软件失
效,会导致整个服务的中断。
通过高性能网络或局域网互联的服务器集群正成为实现高可伸缩的、高可用网
络服务的有效结构。这种松耦合结构的服务器集群系统有下列优点:
(1)性能
网络服务的工作负载通常是大量相互独立的任务,通过一组服务器分而治之,
可以获得很高的整体性能。
(2)性能/价格比
组成集群系统的 PC 服务器或 RISC 服务器和标准网络设备因为大规模生产降低
成本,价格低,具有最高的性能/价格比。若整体性能随着结点数的增长而接近线性
增加,该系统的性能/价格比接近于 PC 服务器。所以,这种松耦合结构比紧耦合的
多处理器系统具有更好的性能/价格比。
(3)可伸缩性
集群系统中的结点数目可以增长到几千个,乃至上万个,其伸缩性远超过单台
超级计算机。
(4)高可用性
在硬件和软件上都有冗余,通过检测软硬件的故障,将故障屏蔽,由存活结点
提供服务,可实现高可用性。
1.3 集群类型
目前的集群类型主要概括为三大类型:高可扩展性集群技术(负载均衡)、高 可
靠性集群和高性能计算集群。本章将讲解负载均衡技术,高可用性及高性能集群将
在后面介绍。
高可扩展性集群技术就是带均衡策略(算法)的服务器群集。负载均衡群集在
多节点之间按照一定的策略(算法)分发网络或计算处理负载。负载均衡建立在现
有网络结构之上,它提供了一种廉价有效的方法来扩展服务器带宽,增加吞吐量,
提高数据处理能力,同时又可以避免单点故障。
高可扩展性集群一般的框架结构如图 4-1 所示(以 Web 访问为例,其它应用类
似)。后台的多个 Web 服务器上面有相同的 Web 内容,Internet 客户端的访问请求首
先进入一台服务器,由它根据负载均衡策略(算法)合理地分配给某个 Web 服务器。
每个 Web 服务器有相同的内容做起来不难,所以选择负载均衡策略(算法)是个关
键问题。下面会专门介绍均衡算法。
图 4-1
负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人过
度劳累。但是与轮流值日制度不同的是,负载均衡是一种动态均衡,它通过一些工
具实时地分析数据包,掌握网络中的数据流量状况,把任务理分配出去。对于不同
的应用环境(如电子商务网站,它的计 算负荷大;再如网络数据库应用,读写频繁,
服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络
接口负担重压。),使用的均衡策略(算法)是不同的。 所以均衡策略(算法)也就有
了多种多样的形式,广义上的负载均衡既可以设置专门的网关、负载均衡器,也可
以通过一些专用软件与协议来实现。在 OSI 七层协议模型中的第二(数据链路层)、
第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略(算
法),在数据链路层上实现负载均衡的原理是根据数据包的目的 MAC 地址选择不同
的路径;在网络层上可利用基于 IP 地址的分配方式将数据流疏通到多个节点;而传
输层和应用层的交换(Switch),本身便是一种基于访问流量的控制方式,能够实现
负载均衡。
不同的集群软件实现的方法都不太相同,下面我们将介绍 Linux 下的负载均衡
集群 LVS(Linux Virtual Server)。
2. LVS 集群介绍
针对高可伸缩、高可用网络服务的需求,中国的章文嵩博士给出了基于 IP 层和
基于内容请求分发的负载平衡调度解决方法,并在 Linux 内核中实现了这些方法,
将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。
虚拟服务器的体系结构如图 4-2 所示,一组服务器通过高速的局域网或者地理
分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。负载调
度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户
是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务
器一样。客户程序不受服务器集群的影响不需作任何修改。系统的伸缩性通过在服
务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确
地重置系统达到高可用性。由于该负载调度技术是在 Linux 内核中实现的,因此称
之为 Linux 虚拟服务器(Linux Virtual Server)。
图 4-2
目前,LVS 项目已提供了一个实现可伸缩网络服务的 Linux Virtual Server 框架,
如图 4-3 所示。在 LVS 框架中,提供了含有三种 IP 负载均衡技术的 IP 虚拟服务器
软件 IPVS、基于内容请求分发的内核 Layer-7 交换机 KTCPVS 和集群管理软件。可
以利用 LVS 框架实现高可伸缩的、高可用的 Web、Cache、Mail 和 Media 等网络服
务;在此基础上,可以开发支持庞大用户数的、高可伸缩的、高可用的电子商务应
用。