本文介绍了Linux下的cluster软件LVSlinux 集群软件,并举例介绍一个Linux下的cluster(集群)的安装和实现的详尽过程。。

在各类网路服务普遍应用的明天,随网路速率的提升以及用户的降低,在一些忙碌的场合,单凭一台机器早已未能能够应付所有的网路恳求了。为了解决这个问题,许多用户就采用一组cluster(集群)来取代单一的机器。cluster可以将多台计算机联接上去协同运作以对外提供各类服务,例如Apache、FTP、Mail等。

在Linux上最常见的、也可能是运用最广泛的cluster方案就是LVS(LinuxVirtual

Server),很高兴LVS也是一个中国人创建和开发的开放源码项目。LVS自1998年开始,发展到如今早已是一个比较成熟的技术项目了。有许多比较知名网站和组织都在使用LVS架设的cluster,例如:、、等。

下边就开始介绍一下,笔者是怎样借助LVS来架设一组cluster来对外提供Apache和FTP服务的。

安装操作系统

笔者选用的是RedHat9.0作为些cluster的director机器和所有realserver机器的操作系统。RH的安装过程从略,笔者按照实际须要linux获取当前时间,只安装了少数的包。对于成批安装Linux,建议试试Kickstart来步入批理安装。

编译支持LVS的内核

LVS对Linux的kernel进行了更改和降低,所以要重新编译linuxkernel。我们先从下载到LVS的内核补丁,对原有内核源代码进行更新,之后重新编译Linux的kernel。

下载LVS的内核补丁时要注意补丁版本要和kernel版本相一致,对于RH9.0,它的Linux核心版本是2.4.20,所以对应内核补丁应当是

另外还有一个补丁是拿来解决个别情况下ARP合同不能正常工作问题的,从~ja/hidden-2.4.20pre10-1.diff下载。

把里面下载的两个补丁复制到/usr/src目录下,之后执行以下命令

cd/usr/src

gzip-cdlinux-2.4.20-ipvs-1.0.9.patch.gz

cd/usr/src/linux

patch-p1<../linux-2.4.20-ipvs-1.0.9.patch

patch-p1<../hidden-2.4.20pre10-1.diff

makemrproper

makemenuconfig

执行makemenuconfig时嵌入式linux驱动程序设计从入门到精通,我们将步入一个图形化的界面,在其中可以对LinuxKernel进行详尽设置。与LVS相关的kernel选项都在“Networkingoptions”中,步入“Networkingoptions”,可以查看到“IP:VirtualServerConfiguration”选项,将其它所有的子选项都选上:

<M>virtualserversupport(EXPERIMENTAL)

[*]IPvirtualserverdebugging

(12)IPVSconnectiontablesize(theNthpowerof2)

—IPVSscheduler

<M>round-robinscheduling

<M>weightedround-robinscheduling

<M>least-connectionschedulingscheduling

<M>weightedleast-connectionscheduling

<M>locality-basedleast-connectionscheduling

<M>locality-basedleast-connectionwithreplicationscheduling

<M>destinationhashingscheduling

<M>sourcehashingscheduling

linux 集群软件_集群软件价格_集群软件园

<M>shortestexpecteddelayscheduling

<M>neverqueuescheduling

—IPVSapplicationhelper

<M>FTPprotocolhelper

另外,“Networkingoptions”中的“IP:NetfilterConfiguration”中的选项的所有子项,不仅以下两项不要选之外,其它全可以选:

<>ipchains(2.2-style)support

<>ipfwadm(2.0-style)support

还有,“Networkingoptions”中还有一些关于网路的选项,要注意按自己的须要去选择:

<*>Packetsocket

[]Packetsocket:mmappedIO

<*>Netlinkdeviceemulation

[*]Networkpacketfiltering(replacesipchains)

[*]Networkpacketfilteringdebugging

[*]SocketFiltering

<*>Unixdomainsockets

[*]TCP/IPnetworking

[*]IP:multicasting

[*]IP:advancedrouter

[*]IP:policyrouting

[]IP:usenetfilterMARKvalueasroutingkey

[]IP:fastnetworkaddresstranslation

<M>IP:tunneling

对于kernel的其它选项,你可以按照须要进行选择。kernel的配置是一项很须要经验、细心和耐心的工作,不当的配置可能会造成编译过程中出现错误或则是新的kernel不能驱动原有的设备等问题。

退出保存,之后继续执行以下命令

makedep

makeclean

makebzImage

makemodules

makemodules_install

以上各步可能须要一点时间,假如出错请重新检测你的kernel配置,假如没有出现任何错误就继续执行以下命令:

depmod-a

cparch/i386/boot/bzImage/boot/vmlinuz-lvs

linux 集群软件_集群软件园_集群软件价格

cpSystem.map/boot/System.map-lvs

cd/boot

rmSystem.map

ln-sSystem.map-lvsSystem.map

之后更改你的lilo.conf使用新的kernel启动,例如在lilo.conf中以降低下几行以降低关于新的支持LVS的kernel的启动项:

image=/boot/vmlinuz-lvs

label=lvs

read-only

root=/dev/sda1

注:假如使用Grub做启动引导程序的,请自行做对应的更改,以降低关于新的支持LVS的kernel的启动项。

重新启动Linux,选择lvs项步入Linux。

安装ipvsadm

假如正常启动了,就开始安装IP虚拟服务器软件ipvsadm。由于我们用的是RH,所以我们直接下载RPM包进行安装。RPM包从以下地址下载:

用以下命令来安装ipvsadm:

rpmbuild--rebuildipvsadm-1.21-7.src.rpm

rpm-ivh/usr/src/redhat/RPMS/i386/ipvsadm-1.21-7.i386.rpm

至此,LVS的安装算是完成了一半。就是说,如今的Linux早已具备了实现LVS的能力了,接出来的问题就是假如使用LVS来建立一组cluster了。要想实现一组cluster,我们就要使用ipvsadm工具进行配置,而在我们开始使用ipvsadm进行配置之前,我们须要了解一些基本的LVS的知识,非常是以下三个要点:LVS的结构、LVS的三种包转发形式、LVS的八种调度算法。只有了解了这种知识之后,我们就能理该怎么使用ipvsadm来进行配置。下边简单介绍LVS的这三个要点:

1.LVS的结构

LVS形式的cluster从结构上可分为两部份:后端的负载均衡器(称之为director)和前端的真实服务器(称之为realserver)。cluster后端的director将来自外界的恳求调度到cluster前端不同的realserver去执行。realserver负责真正的提供各类应用服务,例如:Web、FTP、Mail等服务。realserver的数目可以按照实际需求进行降低、减少。

2.LVS的三种包转发形式

LVS提供了三种包转发形式:NAT(网路地址映射)、IPTunneling(IP隧洞)、DirectRouting(直接路由)。不同的转发模式决定了不同的cluster的网路结构,下边对三种转发形式分别介始:

NAT(网路地址映射)

NAT方法可支持任何的操作系统,以及私有网路,但是只需一个InternetIP地址,并且整个系统的性能遭到限制。由于执行NAT每次须要重画包,有一定的延后;另外,大部份应用有80%的数据是从服务器流向顾客机,也就是用户的恳求十分短,而服务器的回应特别大,对负载均衡器产生很大压力,成为了新的困局。

IPTunneling(IP隧洞)

director分配恳求到不同的realserver。realserver处理恳求后直接回应给用户,这样director负载均衡器仅处理顾客机与服务器的一半联接。IPTunneling技术极大地提升了director的调度处理能力,同时也极大地增强了系统能容纳的最大节点数,可以超过100个节点。realserver可以在任何LAN或WAN上运行,这意味着容许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有即将的IP地址用于与顾客机直接通讯,而且所有服务器必须支持IP隧洞合同。

DirectRouting(直接路由)

与IPTunneling类似,负载均衡器仅处理一半的联接,防止了新的性能困局,同样降低了系统的可伸缩性。DirectRouting与IPTunneling相比,没有IP封装的开支,但因为采用数学层(更改MAC地址)技术,所有服务器都必须在一个化学网关。

3.LVS的八种调度算法

LVS已实现了以下八种调度算法:

1.轮叫调度(Round-RobinScheduling)

2.加权轮叫调度(WeightedRound-RobinScheduling)

3.最小连接调度(Least-ConnectionScheduling)

4.加权最小连接调度(WeightedLeast-ConnectionScheduling)

5.基于局部性的最少链接(Locality-BasedLeastConnectionsScheduling)

6.带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplicationScheduling)

7.目标地址散列调度(DestinationHashingScheduling)

8.源地址散列调度(SourceHashingScheduling)

注:假如想了解关于以上几点的技术细节,LVS的主页查询。LVS的主页是:

了解了LVS的三个要点以后,接出来我们来配置一个采用DirectRouting包转发形式、加权最小连接调度算法的cluster。

我们晓得DirectRouting包转发方法是通过改写恳求报文的MAC地址,将恳求发送到realserver。前台的director机器只须要接收和调度外界的恳求,而不须要负责返回那些恳求的反馈结果。director机器和realserver都有一块网卡连在同一化学网关上。所以我们给出以下的网路拓扑图:

director机器上须要进行如下配置:

设置好本机的IP:192.168.2.1

之后执行以下命令:

ifconfiglo:0192.168.2.254netmask255.255.255.255broadcast

192.168.2.254up

routeadd-host192.168.2.254devlo:0

echo1>/proc/sys/net/ipv4/ip_forward

echo1>/proc/sys/net/ipv4/conf/all/hidden

ipvsadm-C

ipvsadm-A-t192.168.2.254:80-swlc

ipvsadm-a-t192.168.2.254:80-r192.168.2.2-g

ipvsadm-a-t192.168.2.254:80-r192.168.2.3-g

……

ipvsadm-A-t192.168.2.254:21-swlc

ipvsadm-a-t192.168.2.254:21-r192.168.2.2-g

ipvsadm-a-t192.168.2.254:21-r192.168.2.3-g

……

realserver机器上须要进行如下配置:

对于第一台realserver(RS1),设置好本机的IP:192.168.2.2之后执行以下命令:

ifconfiglo:0192.168.2.254netmask255.255.255.255broadcast

192.168.2.254up

routeadd-host192.168.2.254devlo:0

对于其它realserver:RS2、RS3、RS4……,做相类的设定。

完成以上设置后,所有对192.168.2.254的80端口的访问就会通过director机器分配到旁边的realserver起来,而realserver的处理后结果将直接反馈给顾客。至此,我们完成了一个cluster的反例。通过这个反例,相信您也可以轻松地借助Linux架设起一组cluster来。虽然在cluster架设到这儿以后,还并不能达到即将应用的要求,实际应用中还有一些问题须要解决,例如要安装监视软件,监视集群的运作,要能及时发觉realserver的故障并对应调整realserver的列表。还有后台realserver节点的数据一致性等问题。那些在一些商用的cluster软件产品中就得到了挺好的解决linux 集群软件,而网路也有一些非商用的软件,例如mon就是这样的系统资源监控程序,可以监控网路服务可用性、服务器问题等,最重要的是mon提供了一个框架,用户可以自行定义和扩充。那些内容请参阅其它文章。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复