




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用LVS构架负载均衡Linux集群系统 (1)发布时间:2003.11.12 09:20 来源:开放系统世界 作者:余海发最近有客户需要一个负载均衡方案,笔者对各种软硬件的负载均衡方案进行了调查和比较,从IBM sServer Cluster、Sun Cluster PlatForm等硬件集群,到中软、红旗、TurboLinux的软件集群,发现无论采用哪个厂商的负载均衡产品其价格都是该客户目前所不能接受的。于是笔者想到了开放源项目Linux Virtual Server(简称LVS)。经过对LVS的研究和实验,终于在Red Hat 9.0上用LVS成功地构架了一组负载均衡的集群系统。整个实现过
2、程整理收录如下,供读者参考。选用的LVS实际上是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组服务器构成一个高性能、高可用的虚拟服务器。使用三台机器就可以用LVS实现最简单的集群,如图1所示。图1显示一台名为Director的机器在集群前端做负载分配工作;后端两台机器称之为Real Server,专门负责处理Director分配来的外界请求。该集群的核心是前端的Director机器,LVS就是安装在这台机器上,它必须安装Linux。Real Server则要根据其选用的负载分配方式而定,通常Rea
3、l Server上的设置比较少。接下来介绍Director机器上LVS的安装过程。图1 LVS实现集群系统结构简图安装LVS的安装主要是在Director机器上进行,Real Server只需针对不同的转发方式做简单的设定即可。特别是对LVS的NAT方式,Real Server惟一要做的就是设一下缺省的网关。所以构架集群的第一步从安装Director机器开始。首先要在Director机器上安装一个Linux操作系统。虽然早期的一些Red Hat版本,如6.2、7.2、8.0等自带Red Hat自己的集群软件,或者是在内核中已经支持LVS,但是为了更清楚地了解LVS的机制,笔者还是选择自行将LV
4、S编入Linux内核的方式进行安装,Linux版本采用Red Hat 9.0。如果用户对Red Hat的安装比较了解,可以选择定制安装,并只安装必要的软件包。安装中请选择GRUB做为启动引导管理软件。因为GRUB在系统引导方面的功能远比LILO强大,在编译Linux内核时可以体会它的方便之处。LVS是在Linux内核中实现的,所以要对原有的Linux内核打上支持LVS的内核补丁,然后重新编译内核。支持LVS的内核补丁可以从LVS的官方网站下载,下载时请注意使用的Linux核心版本,必须下载和使用的Linux内核版本相一致的LVS内
5、核补丁才行。对于Red Hat 9.0,其Linux内核版本是2.4.20,所以对应内核补丁应该是/software/kernel-2.4/linux-2.4.20-ipvs-1.0.9.patch.gz。笔者经过多次实验,使用Red Hat 9.0自带的Linux源代码无法成功编译LVS的相关模组。由于时间关系笔者没有仔细研究,而是另外从上下载了一个tar包格式的2.4.20内核来进行安装,顺利完成所有编译。下面是整个内核的编译过程:1.删除Red Hat自带的Linux源代码2.下载2.4.20内核3.解压
6、到当前目录/usr/src4.建立链接文件5.打上LVS的内核补丁在打补丁时,注意命令执行后的信息,不能有任何错误信息,否则核心或模组很可能无法成功编译。6.打上修正ARP问题的内核补丁这一步在Director机器上可以不做,但是在使用LVS/TUN和LVS/DR方式的Real Server上必须做。7.为新核心命名打开/usr/src/linux/Makefile。注意,在开始部分有一个变量EXTRAVERSION可以自行定义。修改这个变量,比如改成“EXTRAVERSION=-LVS”后,编译出的核心版本号就会显示成2.4.20-LVS。这样给出有含义的名称将有助于管理多个Linux核心。
7、8.检查源代码这一步是为确保源代码目录下没有不正确的.o文件及文件的互相依赖。因为是新下载的内核,所以在第一次编译时,这一步实际可以省略。9.配置核心选项命令执行后会进入一个图形化的配置界面,可以通过这个友好的图形界面对内核进行定制。此过程中,要注意对硬件驱动的选择。Linux支持丰富的硬件,但对于服务器而言,用不到的硬件驱动都可以删除。另外,像Multimedia devices、Sound、Bluetooth support、Amateur Radio support等项也可以删除。注意,以下几项配置对LVS非常重要,请确保作出正确的选择:(1)Code maturity level op
8、tions项对此项只有以下一个子选项,请选中为*,即编译到内核中去。(2)Networking options项对此项的选择可以参考以下的配置,如果不清楚含义可以查看帮助:(3)Networking options项中的IP: Virtual Server Configuration项如果打好了LVS的内核补丁,就会出现此选项。进入Virtual Server Configuration选项,有以下子选项:以上所有项建议全部选择。(4)Networking options项中的IP: Netfilter Configuration项对于2.4版本以上的Linux Kernel来说,iptabl
9、es是取代早期ipfwadm和ipchains的更好选择,所以除非有特殊情况需要用到对ipchains和ipfwadm的支持,否则就不要选它。本文在LVS/NAT方式中,使用的就是iptables,故这里不选择对ipchains和ipfwadm的支持:10. 编译内核(1)检查依赖关系确保关键文件在正确的路径上。(2)清除中间文件确保所有文件都处于最新的版本状态下。(3)编译新核心(4)编译模组编译选择的模组。(5)安装模组生成模组间的依赖关系,以便modprobe定位。(6)使用新模组(7)修改GRUB,以新的核心启动执行完new-kernel-pkg命令后,GRUB的设置文件/etc/gr
10、ub.conf中已经增加了新核心的启动项,这正是开始安装Linux时推荐使用GRUB做引导程序的原因。将Kernel项中的root=LABEL=/改成 root=/dev/sda1 (这里的/dev/sda1是笔者Linux的根分区,读者可根据自己的情况进行不同设置)。保存修改后,重新启动系统:系统启动后,在GRUB的界面上会出现Red Hat Linux(2.4.20-LVS)项。这就是刚才编译的支持LVS的新核心,选择此项启动,看看启动过程是否有错误发生。如果正常启动,ipvs将作为模块加载。同时应该注意到,用LVS的内核启动后在/proc目录中新增了一些文件,比如/proc/sys/ne
11、t/ipv4/vs/*。11.安装IP虚拟服务器软件ipvsadm用支持LVS的内核启动后,即可安装IP虚拟服务器软件ipvsadm了。用户可以用tar包或RPM包安装,tar包可以从以下地址/software/kernel-2.4/ipvsadm-1.21.tar.gz下载进行安装。这里采用源RPM包来进行安装:注意高版本的rpm命令去掉了-rebuild这个参数选项,但提供了一个rpmbuild命令来实现它。这一点和以前在Red Hat 6.2中以rpmrebuild XXX.src.rpm来安装源RPM包的习惯做法有所不同。
12、安装完,执行ipvsadm命令,应该有类似如下的信息出现:出现类似以上信息,表明支持LVS的内核和配置工具ipvsadm已完全安装,这台Director机器已经初步安装完成,已具备构架各种方式的集群的条件。原理接下来的工作是根据实际需求选择采用何种负载分配方式和调度算法。目前LVS主要有三种请求转发方式和八种调度算法。根据请求转发方式的不同,所构架集群的网络拓扑、安装方式、性能表现也各不相同。用LVS主要可以架构三种形式的集群,分别是LVS/NAT、LVS/TUN和LVS/DR,可以根据需要选择其中一种。在选定转发方式的情况下,采用哪种调度算法将决定整个负载均衡的性能表现,不同的算法适用于不同
13、的应用场合,有时可能需要针对特殊场合,自行设计调度算法。LVS的算法是逐渐丰富起来的,最初LVS只提供4种调度算法,后来发展到以下八种:1.轮叫调度(Round Robin)调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。2.加权轮叫(Weighted Round Robin)调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。3.最少链接(Least Connection
14、s)调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。4.加权最少链接(Weighted Least Connections)在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。5.基于局部性的最少链接(Locality-Based Least Connections)“基于局部性的最少链接”调度算法是针对目标IP地址的负载均
15、衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算
16、法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。7.目标地址散列(Destination Hashing)“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求
17、发送到该服务器,否则返回空。8.源地址散列(Source Hashing)“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。了解这些算法原理能够在特定的应用场合选择最适合的调度算法,从而尽可能地保持Real Server的最佳利用性。当然也可以自行开发算法,不过这已超出本文范围,请参考有关算法原理的资料。实例理解了上述关于请求转发方式和调度算法的基本概念后,就可以运用LVS来具体实现几种不同方式的负载均衡的集群系统。LVS的配置是通过前面所安装的IP虚拟服务器软件ipvsa
18、dm来实现的。ipvsadm与LVS的关系类似于iptables和NetFilter的关系,前者只是一个建立和修改规则的工具,这些命令的作用在系统重新启动后就消失了,所以应该将这些命令写到一个脚本里,然后让它在系统启动后自动执行。网上有不少配置LVS的工具,有的甚至可以自动生成脚本。但是自己手工编写有助于更深入地了解,所以本文的安装没有利用其它第三方提供的脚本,而是纯粹使用ipvsadm命令来配置。下面就介绍一下如何配置LVS/NAT、LVS/TUN、LVS/DR方式的负载均衡集群。1.设定LVS/NAT方式的负载均衡集群NAT是指Network Address Translation,它的转
19、发流程是:Director机器收到外界请求,改写数据包的目标地址,按相应的调度算法将其发送到相应Real Server上,Real Server处理完该请求后,将结果数据包返回到其默认网关,即Director机器上,Director机器再改写数据包的源地址,最后将其返回给外界。这样就完成一次负载调度。构架一个最简单的LVS/NAT方式的负载均衡集群如图2所示。图2 LVS/NAT方式的集群简图Real Server可以是任何的操作系统,而且无需做任何特殊的设定,惟一要做的就是将其默认网关指向Director机器。Real Server可以使用局域网的内部IP(/24)。D
20、irector要有两块网卡,一块网卡绑定一个外部IP地址(),另一块网卡绑定局域网的内部IP(54),作为Real Server的默认网关。这里将所有LVS的配置命令写到一个可执行脚本中,脚本如下:将该脚本保存为/root/lvs_nat.sh,然后加上可执行属性,执行它:运行该脚本后,一个简单的LVS/NAT方式的负载均衡集群已经成功架设。模拟多个用户从外界访问的80端口,用ipvsadm可以观看到以下信息:其中ActiveConn表示对应的Real Server当前有多少个正在活动的连接,InActConn表示不活动的连接数。从这里我们
21、可以看到有3个HTTP请求,被分别分配在不同的Real Server上,表明这个负载均衡集群正在成功运行中。本例完成了这样一个简单的LVS/NAT集群,由此可以看出,LVS/NAT方式实现起来最为简单,而且Real Server使用的是内部IP,可以节省Real IP的开销。但因为执行NAT需要重写流经Director的数据包,在速度上有一定延迟;另外,当用户的请求非常短,而服务器的回应非常大的情况下,会对Director形成很大压力,成为新的瓶颈,从而使整个系统的性能受到限制。2.设定LVS/TUN方式的负载均衡集群TUN是指IP Tunneling,它的转发流程是:Director机器收到
22、外界请求,按相应的调度算法将其通过IP隧道发送到相应Real Server,Real Server处理完该请求后,将结果数据包直接返回给客户。至此完成一次负载调度。最简单的LVS/TUN方式的负载均衡集群架构如图3所示。LVS/TUN使用IP Tunneling技术,在Director机器和Real Server机器之间架设一个IP Tunnel,通过IP Tunnel将负载分配到Real Server机器上。Director和Real Server之间的关系比较松散,可以是在同一个网络中,也可以是在不同的网络中,只要两者能够通过IP Tunnel相连就行。收到负载分配的Real Server
23、机器处理完后会直接将反馈数据送回给客户,而不必通过Director机器。实际应用中,服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。图3 LVS/TUN方式的集群简图这里将所有LVS的配置命令写到一个可执行脚本,脚本内容如下:将上面的脚本保存为/root/lvs_tun.sh。然后加上可执行属性,执行它:运行此脚本之后应该出现如下信息:另外在每台Real Server上还要执行如下的命令:注意Real Server的内核必须打上修正ARP问题的内核补丁,如Linux2.4.20的内核是hidden-2.4.20pre10-1.diff,编译内核的方法参见D
24、irector机器。通过本例来简单评价一下LVS/TUN方式。该方式中Director将客户请求分配到不同的Real Server,Real Server处理请求后直接回应给用户,这样Director就只处理客户机与服务器的一半连接,极大地提高了Director的调度处理能力,使集群系统能容纳更多的节点数。另外TUN方式中的Real Server可以在任何LAN或WAN上运行,这样可以构筑跨地域的集群,其应对灾难的能力也更强,但是服务器需要为IP封装付出一定的资源开销,而且后端的Real Server必须是支持IP Tunneling的操作系统。3.设定LVS/DR方式的负载均衡集群DR是指D
25、irect Routing,它的转发流程是:Director机器收到外界请求,按相应的调度算法将其直接发送到相应Real Server,Real Server处理完该请求后,将结果数据包直接返回给客户,完成一次负载调度。构架一个最简单的LVS/DR方式的负载均衡集群如图4所示。Real Server和Director都在同一个物理网段中,Director的网卡IP是53,再绑定另一个IP:54作为对外界的virtual IP,外界客户通过该IP来访问整个集群系统。Real Server在lo上绑定IP:54,同时加入相应的路由。Director端的实现脚本如下:图4 LVS/DR方式的集群简图将脚本保存为/r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商行业2025年售后服务品牌建设策略研究报告
- 咖啡连锁品牌扩张战略布局报告:2025年市场拓展与品牌差异化竞争
- 北师大版初中九年级下册数学2.4二次函数的应用(1)课件
- 2023-2024学年贵州省毕节市威宁县九年级上学期物理期末试题及答案
- 树类型题目及答案
- 数据结构期末考试试题及答案
- 数学化简题目及答案
- 孙权劝学 题目及答案
- 陶渊明饮酒题目及答案
- 养狗管理办法重庆
- 学校2025-2026学年度第一学期工作计划
- 干货 - 高中历史全套思维导图100张
- 屋面光伏工程施工组织设计
- 2025年永诚财产保险股份有限公司招聘笔试参考题库含答案解析
- 组织架构重构:数智生态赋能主流媒体系统性变革的关键维度
- 农民金融知识培训课件
- 2025年中铁水务集团有限公司招聘笔试参考题库含答案解析
- 基孔肯雅热的健康宣教
- 云南省烟花爆竹经营单位主要负责人考试练习题1(100题)附答案
- 夏季预防空调病宣传
- 科技园区火灾应急预案
评论
0/150
提交评论