在RedHat EL 40 中实现高可用WEB负载均衡群集Word文件下载.docx
《在RedHat EL 40 中实现高可用WEB负载均衡群集Word文件下载.docx》由会员分享,可在线阅读,更多相关《在RedHat EL 40 中实现高可用WEB负载均衡群集Word文件下载.docx(6页珍藏版)》请在冰豆网上搜索。
RIP2=192.168.0.251
/etc/rc.d/init.d/funcions
case"
$1"
in
start)
echo"
startLVSofDirectorServer"
#SettheVirtualipaddress
/sbin/ifconfigeth0:
0$VIPbroadcast$VIPnetmask255.255.255.255up
/sbin/routeadd-host$VIPdeveth0:
#ClearipvsTable
/sbin/ipvsadm-C
#setlvs
/sbin/ipvsadm-A-t$VIP:
80-srr
/sbin/ipvsadm-a-t$VIP:
80-r$RIP1:
80-g
80-r$RIP2:
#RunLvs
/sbin/ipvsadm
;
;
stop)
closeLVSDirectorsever"
0down
*)
Usage:
$0{start|stop}"
exit1
esac
#保存并退出,将该文件设置为可执行文件
[root@directorroot]#chmod755/etc/init.d/lvsdr
3、安装ipvsadm
[root@Directorroot]#modprobe–l|grepipvs
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.9-11.EL/kernel/net/ipv4/ipvs/ip_vs_lc.ko
[root@directorroot]#ln–s/usr/src/kernels/2.6.9-11.EL-i686/usr/src/linux
[root@directorroot]#
tarxzvfipvsadm-1.24.tar.gz
[root@directoripvsadm-1.24]#cdipvsadm-1.24
[root@directoripvsadm-1.24]#make
[root@directoripvsadm-1.24]#makeinstall
由于在这里我搭建的是WEB的负载均衡群集,而我在安装RedhatEL4.0时并没有选择安装WEB服务器组件,所以这里需要另外安装,如果已安装的朋友可以略过这里(注:
可以用rpm–qa|grephttp查看是否已经安装)
[root@directorroot]
#
tarxzvfhttpd-2.2.4.tar.gz
#cdhttpd-2.2.4
[root@directorhttpd-2.2.4]#./configure–prefix=/usr/local/apache–enable-so–enable-rewrite
[root@directorhttpd-2.2.4]#make
[root@directorhttpd-2.2.4]#makeinstall
[root@directorhttpd-2.2.4]#echo“/usr/local/apache/bin/apachectl”>
>
/etc/rc.local
4、安装heartbeat
在安装heartbeat前先要安装libnet,下载地址:
[root@directorroot]#tarxzvflibnet.tar.gz
[root@directorroot]#cdlibnet
[root@directorlibnet]#./configure
[root@directorlibnet]#make
[root@directorlibnet]#makeinstall
[root@directorlibnet]#cd
在安装heartbeat之前还需要创建属于heartbeat的组和用户
[root@directorroot]#groupadd–g694haclient
[root@directorroot]#useradd–g694–u694hacluster
[root@directorroot]#tarxzvfheartbeat-2.1.2.tar.gz
[root@directorroot]#cdheartbeat-2.1.2
[root@directorheartbeat-2.1.2]#./ConfigureMeconfigure
[root@directorheartbeat-2.1.2]#make
[root@directorheartbeat-2.1.2]#makeinstall
在安装完heartbeat后,会有一个/etc/ha.d目录,这是heartbeat的配置文件存放的目录,heartbeat的配置文件都放在这里。
但默认在安装完heartbeat后,heartbeat最重要的三个配置文件ha.cf、haresources、authkeys却没有放在这里,需要我们手工copy过来才行。
[root@directorheartbeat-2.1.2]#cpdoc/ha.cfdoc/haresourcesdoc/authkeys/etc/ha.d
将ldirector的配置文件也copy过来
[root@directorheartbeat-2.1.2]#cpldirectord/ldirectord.cf/etc/ha.d
6、编辑heartbeat的配置文件
[root@directorheartbeat-2.1.2]#vi/etc/ha.d/ha.cf
#hearbeat的查错文件存放点
debugfile/var/log/ha-debug
#heartbeat
的日志文件存放点
logfile
/var/log/ha-log
#设定heartbeat(心跳)之间的时间间隔为2秒。
keepalive2
#在60秒后宣布节点死亡。
deadtime60
#在日志中发出“lateheartbeat“警告之前等待的时间,单位为秒。
warntime10
在某些配置下,重启后网络需要一些时间才能正常工作。
这个单独的”deadtime”选项可以处理这种情况。
它的取值至少应该为通常deadtime的两倍。
initdead120
#使用端口694进行bcast和ucast通信。
这是默认的,并且在IANA官方注册的端口号。
udpport
694
#表示在eth0接口上使用广播heartbeat(将eth0替换为eth1,eth2,或者您使用的任何接口)。
bcast
eth0
#Linux
#必须的。
集群中机器的主机名,与“uname–n”的输出相同。
node
director
bkdirector
#必须的,当auto_failback设置为on时,一旦主节点重新恢复联机,将从从节点取回所有资源。
若该选项设置为off,主节点便不能重新获得资源。
该选项与废弃的nice_failback选项类似。
auto_failbackon
#默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况。
#所以当网络中断时,并不会进行LoadBalancer和Backup之间的切换。
#可以通过ipfail插件,设置'
pingnodes'
来解决这一问题。
详细说明参考hearbeat文档。
ping_groupgroup1192.168.0.160192.168.0.225
respawnroot/usr/lib/heartbeat/ipfail
apiauthipfailgid=rootuid=root
hopfudge1
use_logdyes
#保存并退出
编辑haresources文件,haresources文件通知heartbeat程序哪台机器拥有资源,资源名称实际是/etc/init.d或/etc/ha.d/resource.d目录下的脚本,Heartbeat使用haresources配置文件确定它第一次启动时应该做的工作。
该文件列出集群所提供的服务以及服务的默认所有者。
注意:
两个集群节点上的该文件必须相同,否则BadThingsWillHappen。
[root@directorheartbeat-2.1.2]#vi/etc/ha.d/haresources
directorlvsdr
#设置director为主节点,提供的群集服务为lvsdr,主节点的名称要与“uname-n”的输出相同
编辑authkeys文件,需要配置的第三个文件authkeys决定了您的认证密钥。
共有三种认证方式:
crc,md5,和sha1。
您可能会问:
“我应该用哪个方法呢?
”简而言之:
如果您的Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。
如果网络并不安全,但您也希望降低CPU使用,则使用md5。
最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。
[root@directorheartbeat-2.1.2]#vi/etc/ha.d/authkeys
auth1
1crc
#保存并退出
确保authkeys文件仅能由root用户读取
[root@directorheartbeat-2.1.2]#chmod600/etc/ha.d/authkeys
编辑/etc/hosts文件,添加两台机器的名字,做好名字到IP的对应
[root@directorheartbeat-2.1.2]#vi/etc/hosts
192.168.0.160
192.168.0.225
注:
在备用director上也做相同的设置
二、RealServer配置
1、编辑网络接口
[root@cluser1root]#vi/etc/sysconfig/network-scripts/ifcfg-eth0
54:
80:
3A
IPADDR=192.168.0.249
TYPE=Ethernet
[root@cluser1root]#vi/etc/init.d/lvsrs
StartRealServer"
/sbin/ifconfiglo:
/sbin/routeadd-host$VIPdevlo:
1"
>
/proc/sys/net/ipv4/conf/lo/arp_ignore
2"
/proc/sys/net/ipv4/conf/lo/arp_announce
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
sysctl-p
CloseingRealServer....."
ifconfiglo:
$0{start|stop}
将/etc/init.d/lvsrs放到/etc/rc.local文件中,这样可以在开机时自启动
[root@cluser1root]#echo“/etc/init.d/lvsrs”>
在另外一台RealServer上做相同的设置
确保RealServer上的http服务已处于监听状态,可以用netstat–tlunp命令查看
[root@cluster1root]#netstat–tlunp
如果没有启用启用http服务,请启用。
[root@cluster1root]#/usr/local/apache/bin/apachectlstart
三、启动web群集负载平衡与测试
1、启动heartbeat
[root@directorroot]#/etc/init.d/heartbeatstart
在备用director上启动heartbeat
2、测试
此时在客户端的浏览器中输入群集服务器的IP地址:
http:
//192.168.0.222
就会显示相应的页面,最好是在两台RealServer上设置不同的WEB页面,这样在客户端刷页面就会看到不同的页面,这样也可以证明客户端的请求是在两台不同的服务器进行轮询。
也可以在主备份服务器上使用ipvsadm–lc命令查看
[root@directorroot]#ipvsadm-lc
PVSconnectionentries
proexpirestate
source
virtual
destination
TCP01:
55
FIN_WAIT
192.168.0.114:
2849192.168.0.222:
httpcluster1:
http
TCP14:
56
ESTABLISHED192.168.0.114:
2850192.168.0.222:
httpcluster2:
测试1:
主director崩溃后,从director是否可以接管主director的工作
为了测试主director崩溃后,从director是否可以接管主director的工作,将主director关机或拔掉网线.然后在从director进行如下操作以证明从director是否已经接管了主director的工作:
1、用ifconfig命令查看是否有eth0:
0接口,主director正常工作的时候,在从director是不会出现eth0:
0接口的,主director崩溃后eth0:
0即刻就会出现
2、可以用tail–f/var/log/messages命令查看heartbeat的日志
3、用ipvsadm
命令查看是否已经启用ipvsadm,主director正常工作的时候,从director是不会启用ipvsadm的,主director正常工作时,在从director用ipvsadm查看的显示:
[root@bkdirectorroot]#ipvsadm
IPVirtualServerversion1.2.0(size=4096)
ProtLocalAddress:
PortSchedulerFlags
->
RemoteAddress:
Port
ForwardWeightActiveConnInActConn
主director崩溃后,从director上的ipvsadm输出
TCP
192.168.0.222:
httprr
redhat:
http
Route
1
0
0
redhatAS4.0:
测试2:
主director恢复正常后,从director上的服务是否会回到主director上
1、重新启动主director,在主director启动,进入系统后,此时在从director上用ifconfig命令查看,发现eth0:
0不见了,在主director上用ifconfig查看可以看到eth0:
0,据此可证明VIP已经由从director转移到了主director上。
2、在客户端浏览器中输入群集服务器的IP地址:
//192.168.0.222
可以正常浏览,在主director上用ipvsadm–lc命令可以查看到客户端浏览群集服务器的WEB页面,而在从director上用ipvsdm–lc命令查看,显示为空白。