千家信息网

用Linux下的LVS软件怎么实现Linux集群

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,今天就跟大家聊聊有关用Linux下的LVS软件怎么实现Linux集群,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这里介绍了Linux下的cl
千家信息网最后更新 2025年01月23日用Linux下的LVS软件怎么实现Linux集群

今天就跟大家聊聊有关用Linux下的LVS软件怎么实现Linux集群,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

这里介绍了Linux下的cluster软件LVS,并举例介绍一个Linux下的cluster(集群)的安装和实现的详细过程。
在各种网络服务普遍应用的今天,随网络速度的提高以及用户的增加,在一些繁忙的场合,单凭一台机器已经无法就能应付所有的网络请求了。为了解决这个问题,许多用户就采用一组cluster(集群)来代替单一的机器。cluster可以将多台计算机连接起来协同运作以对外提供各种服务,比如Apache、FTP、 Mail等。

在Linux上最常见的、也可能是运用最广泛的cluster方案就是LVS(Linux Virtual
Server),很高兴LVS也是一个中国人创建和开发的开放源码项目。LVS自1998年开始,发展到现在已经是一个比较成熟的技术项目了。有许多比较著名网站和组织都在使用LVS架设的cluster,比如: www.linux.com、sourceforge.net、 www.real.com等。

下面就开始介绍一下,笔者是如何利用LVS来架设一组cluster来对外提供Apache和FTP服务的。

安装操作系统

笔者选用的是Red Hat 9.0作为些cluster的director机器和所有real server机器的操作系统。RH的安装过程从略,笔者根据实际需要,只安装了少数的包。对于成批安装Linux,建议试试Kickstart来进入批理安装。

编译支持LVS的内核

LVS对Linux的kernel进行了修改和增加,所以要重新编译 linux kernel。我们先从 http://www.linuxvirtualserver.org下载到LVS的内核补丁,对原有内核源代码进行更新,然后重新编译Linux的kernel。

下载LVS的内核补丁时要注意补丁版本要和kernel版本相一致,对于RH9.0,它的Linux核心版本是2.4.20,所以对应内核补丁应该是 http://www.linuxvirtualserver.org/software/kernel-2.4/linux-2.4.20-ipvs-1.0.9.patch.gz

另外还有一个补丁是用来解决某些情况下ARP协议不能正常工作问题的,从 http://www.ssi.bg/~ja/hidden-2.4.20pre10-1.diff下载。

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

cd /usr/src
gzip -cd linux-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

make mrproper
make menuconfig

执行make menuconfig时,我们将进入一个图形化的界面,在其中可以对Linux Kernel进行详细设置。与LVS相关的kernel选项都在"Networking options"中,进入"Networking options",可以查看到"IP: Virtual Server Configuration"选项,将其它所有的子选项都选上:

<M> virtual server support (EXPERIMENTAL)
[*] IP virtual server debugging
(12) IPVS connection table size (the Nth power of 2)
--- IPVS scheduler
<M> round-robin scheduling
<M> weighted round-robin scheduling
<M> least-connection scheduling scheduling
<M> weighted least-connection scheduling
<M> locality-based least-connection scheduling
<M> locality-based least-connection with replication scheduling
<M> destination hashing scheduling
<M> source hashing scheduling
<M> shortest expected delay scheduling
<M> never queue scheduling
--- IPVS application helper
<M> FTP protocol helper

另外,"Networking options"中的"IP: Netfilter Configuration"中的选项的所有子项,除了以下两项不要选之外,其它全可以选:

< > ipchains (2.2-style) support
< > ipfwadm (2.0-style) support

还有,"Networking options"中还有一些关于网络的选项,要注意按自己的需要去选择:

<*> Packet socket
[ ] Packet socket: mmapped IO
<*> Netlink device emulation
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging
[*] Socket Filtering
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
[*] IP: policy routing
[ ] IP: use netfilter MARK value as routing key
[ ] IP: fast network address translation
<M> IP: tunneling
对于kernel的其它选项,你可以根据需要进行选择。kernel的配置是一项很需要经验、细心和耐心的工作,不当的配置可能会导致编译过程中出现错误或者是新的kernel不能驱动原有的设备等问题。

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

make dep
make clean
make bzImage
make modules
make modules_install

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

depmod -a
cp arch/i386/boot/bzImage /boot/vmlinuz-lvs
cp System.map /boot/System.map-lvs

cd /boot
rm System.map
ln -s System.map-lvs System.map

然后修改你的lilo.conf使用新的kernel启动,比如在lilo.conf中以增加下几行以增加关于新的支持LVS的kernel的启动项:

p_w_picpath=/boot/vmlinuz-lvs
label=lvs
read-only
root=/dev/sda1

注:如果使用Grub做启动引导程序的,请自行做对应的修改,以增加关于新的支持LVS的kernel的启动项。

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

安装ipvsadm

如果正常启动了,就开始安装IP虚拟服务器软件ipvsadm。因为我们用的是RH,所以我们直接下载RPM包进行安装。RPM包从以下地址下载:
http://www.linuxvirtualserver.org/software/kernel-2.4/ipvsadm-1.21-7.src.rpm

用以下命令来安装ipvsadm:

rpmbuild --rebuild ipvsadm-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)和后端的真实服务器(称之为real server)。cluster前端的director将来自外界的请求调度到cluster后端不同的real server去执行。real server负责真正的提供各种应用服务,比如:Web、FTP、Mail等服务。real server的数量可以根据实际需求进行增加、减少。

2. LVS的三种包转发方式

LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介始:

NAT(网络地址映射)

NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。

IP Tunneling(IP隧道)

director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。

Direct Routing(直接路由)

与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。

3. LVS的八种调度算法

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

1.轮叫调度(Round-Robin Scheduling)
2.加权轮叫调度(Weighted Round-Robin Scheduling)
3.最小连接调度(Least-Connection Scheduling)
4.加权最小连接调度(Weighted Least-Connection Scheduling)
5.基于局部性的最少链接(Locality-Based Least Connections Scheduling)
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
7.目标地址散列调度(Destination Hashing Scheduling)
8.源地址散列调度(Source Hashing Scheduling)

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

http://www.LinuxVirtualServer.org/
http://www.linux-vs.org/

了解了LVS的三个要点之后,接下来我们来配置一个采用Direct Routing包转发方式、加权最小连接调度算法的cluster。


我们知道Direct Routing包转发方式是通过改写请求报文的MAC地址,将请求发送到real server。前台的director机器只需要接收和调度外界的请求,而不需要负责返回这些请求的反馈结果。director机器和real server都有一块网卡连在同一物理网段上。所以我们给出以下的网络拓扑图:

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

设置好本机的IP:192.168.2.1
然后执行以下命令:
ifconfig lo:0 192.168.2.254 netmask 255.255.255.255 broadcast
192.168.2.254 up
route add -host 192.168.2.254 dev lo:0
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/conf/all/hidden

ipvsadm -C
ipvsadm -A -t 192.168.2.254:80 -s wlc
ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.2 -g
ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.3 -g
......
ipvsadm -A -t 192.168.2.254:21 -s wlc
ipvsadm -a -t 192.168.2.254:21 -r 192.168.2.2 -g
ipvsadm -a -t 192.168.2.254:21 -r 192.168.2.3 -g
......

real server机器上需要进行如下配置:

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

ifconfig lo:0 192.168.2.254 netmask 255.255.255.255 broadcast
192.168.2.254 up
route add -host 192.168.2.254 dev lo:0

对于其它real server:RS2、RS3、RS4......,做相类的设定。

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

看完上述内容,你们对用Linux下的LVS软件怎么实现Linux集群有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

服务 调度 网络 地址 服务器 机器 配置 方式 软件 系统 问题 命令 补丁 支持 集群 内核 用户 处理 应用 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海高科技互联网数据服务价目表 软件开发工程师麦克叔叔 浙江网络授时模块服务器虚拟主机 深圳服务器回收价目表 门头沟区软件开发技术指导 网站测试服务器 网上学习和网络安全 网络安全指示语 服务器怎么用输入法 创业板软件开发类上市公司 统一软件开发过程简称 移动互联网和软件开发与测试 超市物流管理系统数据库设计 ip代理服务器软件 计算机网络技术拥塞怎么意思 网络安全知识竞赛多选 网络安全基础知识的培训 吃鸡的服务器怎么安装 茶室设计图软件开发 网络安全法逐条解读搜狐 联想rd450服务器刷bios 2021中职数据库考试题及答案 软件开发专员属于什么职位类别 如何学会计算机软件开发 jsp服务器信息 温州机械硬盘服务器 泰州泰达网络技术有限公司 关于网络安全方面的绘画初中 面试软件开发职位要注意哪些 网络技术应用教辅资料
0