搭建集群负载均衡系统.docx
《搭建集群负载均衡系统.docx》由会员分享,可在线阅读,更多相关《搭建集群负载均衡系统.docx(13页珍藏版)》请在冰豆网上搜索。
![搭建集群负载均衡系统.docx](https://file1.bdocx.com/fileroot1/2022-10/28/0fa127a4-84dc-4275-9fa3-b6664cd5bca3/0fa127a4-84dc-4275-9fa3-b6664cd5bca31.gif)
搭建集群负载均衡系统
搭建集群负载均衡系统
作者:
jxinter(jxinter@)
RedHat9.0LVS安裝手冊:
1前言:
RedHat在9.0以后,就将ipvsadm这些套件去除,因此如果想使用LVS(LinuxVirtualServer),就得自已重新编译内核(Kernel)。
首先简单介绍一下LVS到底是什么东西,其实他是一种集群(Cluster)的技术,透过支援IPVS的IPVS的Kernel,来达到LVS/DirectRouting(DR),LVS/IPTunnel,LVS/NAT的功能。
详细内容请看LVS官方网站。
LVS详细参考资料。
http:
//linux.vbird.idv.tw/鳥哥的Linux私房菜(Linux基本常識)
http:
//www.adj.idv.tw/server/linux_lvs.php在RedHat7.3上架設LVS
http:
//www.linuxvirtualserver.org/LVS的官方網站
LinuxAid說明(上)
LinuxAid說明(下)
Alex的網站,重要的patch都從這兒抓取
负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务器组以保证对外提供良好的服务响应;而LVS就是实现这一功能的技术.实际上LVS是一种Linux操作系统上基于IP层的负载均衡调度技术,它在操作系统核心层上,将来自IP层的TCP/UDP请求均衡地转移到不同的服务器,从而将一组服务器构成一个高性能、高可用的虚拟服务器。
图1LVS实现集群系统结构简图
图1显示一台名为Director的机器是前端负载均衡器,运行LVS,目前只能在Linux下运行.可以针对web、ftp、cache、mms甚至mysql等服务做loadbalance;后端机器称之为RealServer,是需要负载均衡的服务器,可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作为RealServer.
∙集群技术主要分为三大类:
o高可用性(HighAvailableCluster),例:
Linux-HA
o负载均衡(LoadbalancingCluster),例:
LVS、MOSIX
o高性能计算(HighPerformanceComputing),例:
Beowulf
我们这里使用RedHat9.0,LVS,Linux-HA,Ldirectord,构造一个高可用的负载均衡集群系
∙各层的作用:
以WEB服务器为例
LoadBalancer(负载均衡器):
LoadBalancer是整个集群系统的前端,负责把客户请求转发到RealServer上。
Backup是备份LoadBalancer,当LoadBalancer不可用时接替它,成为实际的LoadBalancer。
LoadBalancer通过Ldirectord监测各RealServer的健康状况。
在RealServer不可用时把它从群中剔除,恢复时重新加入。
oServerArray(服务器群):
ServerArray是一组运行实际应用服务的机器,比如WEB,Mail,FTP,DNS,Media等等。
在实际应用中,LoadBalancer和Backup也可以兼任RealServer的角色。
oSharedStorage(共享存储):
SharedStorage为所有RealServer提供共享存储空间和一致的数据内容。
各服务器IP分配:
VirtualIP:
192.168.0.100
LoadBalancer:
192.168.0.200
Backup:
192.168.0.222
RealServer1:
192.168.0.224
∙IPVS
∙IPVS是LVS集群系统的核心软件,它的主要作用是:
o安装在LoadBalancer上,把发往VirtualIP的请求转发到RealServer上。
IPVS的负载均衡机制有三种,这里使用IPTunneling机制:
oVirtualServerviaNAT
oVirtualServerviaIPTunneling
oVirtualServerviaDirectRouting
IPVS的负载调度算法有十种:
o轮叫(RoundRobin)
o加权轮叫(WeightedRoundRobin)
o最少链接(LeastConnections)
o加权最少链接(WeightedLeastConnections)
o基于局部性的最少链接(Locality-BasedLeastConnections)
o带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplication)
o目标地址散列(DestinationHashing)
o源地址散列(SourceHashing)
o最短期望延迟(ShortestExpectedDelay)
o无须队列等待(NeverQueue)
IPVS安装主要包括三方面:
o在LoadBanlancer上安装IPVS内核补丁
o在LoadBanlancer上安装IPVS管理软件
o在RealServer上安装ARPhidden内核补丁
(一)在LoadBanlancer和Backup上安装支持IPVS和ARPhidden内核补丁,所有文件都放在\\yip\linux\lvs目录中
把linux-2.4.20.tar.gz解压到/usr/src/目录中,解压后得到linux-2.4.20,把它连接ln–slinux-2.4.20linux。
因为IPVS-1。
0。
9中的makeflie文件中默认指定的kernelsource的路径为;KERNELSOURCE=/usr/src/linux
把ipvs补丁Patch和ARPhidden内核补丁到内核源码中
1把ipvs-1.0.9.tar.gz解压到某个目录,解压后得到ipvs-1.0.9,然后进入ipvs-1.0.9目录中,依次执行如下命令。
Makepatchkernel;makeinstallsource.将ipvs的patch加载到kernel的source中。
2再把下到内核相同的不版本的arphidden修正包。
hidden-2.4.20pre10-1.diff
把hidden-2.4.20pre10-1.diff放到/usr/src/linux目录下。
进入cd/usr/src/linux下执行命令;patch-p1进入cd/usr/src/linux下依次执行,
1.makemrproper为创建新的内和配置做好准备
2.Makemenuconfig进行配置。
KernelCompileOptions:
Codematurityleveloptions--->
[*]Promptfordevelopmentand/orincompletecode/drivers
Networkingoptions--->
[*]Networkpacketfiltering(replacesipchains)
[]Networkpacketfilteringdebugging
...
IP:
NetfilterConfiguration--->
IP:
VirtualServerConfiguration--->
virtualserversupport(EXPERIMENTAL)
[*]IPvirtualserverdebugging
(12)IPVSconnectiontablesize(theNthpowerof2)
---IPVSscheduler
round-robinscheduling
weightedround-robinscheduling
least-connectionschedulingscheduling
weightedleast-connectionscheduling
locality-basedleast-connectionscheduling
locality-basedleast-connectionwithreplicationscheduling
destinationhashingscheduling
sourcehashingscheduling
---IPVSapplicationhelper
FTPprotocolhelper
Networkingoptions--->里IP:
NetfilterConfiguration--->最后二项ipchains和ipfwadm不选其它全选中
Filesystems里选中Ext3支持EXT3格式要不启动时会报EXT3错误
其它相关自行按需所配。
再依次执行
3.makedep;检测是否有相关的软件包被使用
4.makeclean;为新内核结构准备源目录树
5.makebzImage创建内核引导映像
6.makemodules;makemodules_install生成模块
7.makeinstall安装新的内核到指定位置并重新配置grub.conf
8.进入grub.conf中修改vi/boot/grub/menu.lst
#grub.confgeneratedbyanaconda
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:
Youhavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/boot/,eg.
#root(hd0,0)
#kernel/vmlinuz-versionroroot=/dev/hda2
#initrd/initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
titleRedHatLinux(2.4.20)
root(hd0,0)
kernel/vmlinuz-2.4.20roroot=LABEL=/
initrd/initrd-2.4.20.img
#titleRedHat