一.基本介绍
背景描述某大型商业网站由于业务量的发展非常迅速,目前的网站架构根本无法缓解用户访问压力及单点故障。急需一套高可用的负载均衡集群解决方案,
http://www.linuxTone.org(IT
运维专家网)
根据这家商业网站在的状况,部署了一套负载均衡及高可用的集群方案及相关优化,项目实施以后该商业网站得WEB
压力得到了很好的解决,访问速度大幅度提升.
以下是相关配置文档,拿出来与朋友们分享希望对更多想了解LVS/HA
的朋友有帮助。
本文特色1
.介绍LVS+Heartbeat
两种案装方法2.
采用heartbeat 2.x style
的配置(
使用cib.xml)
3.
测试日志分析及相关技巧4.
两个在真实案例中的经验分享 二.网络拓朴图及相关描述[attach]387[/attach]
1.
主机名:(/etc/hosts)
- 192.168.1.102primarylb.linuxtone.org
- 192.168.1.103backuplb.linuxtone.org
复制代码 2.
VIP[eth0:0] 192.168.1.106 Realserver1 192.168.1.104 Realserver2 192.168.1.1053.Heartbeat
心跳线a)
使用一根串口直连线缆(serial null modem cable
)Heartbeat
b)eth1:10.0.0.110.0.0.2 (
交叉线直连Heartbeat)
三.安装Heartbeat[yum安装,编译安装]1
.通过Yum
安装Heartbeat
- #yuminstall heartbeat-*
- //安装HA
- #yuminstall heartbeat-ldirectord
- //安装ldirectord实现LVS的高可用性
- # rpm-qa|grep heartbeat
复制代码 //
查看安装相关的包 - heartbeat-stonith-2.1.3-3.el5.centos
- heartbeat-devel-2.1.3-3.el5.centos
- heartbeat-pils-2.1.3-3.el5.centos
- heartbeat-2.1.3-3.el5.centos
- heartbeat-ldirectord-2.1.3-3.el5.centos
- heartbeat-gui-2.1.3-3.el5.centos
复制代码 #rpm -q heartbeat –d
//
查看Heartbeat
相关doc
目录将相关配置文件拷贝到/etc/ha.d
目录下 - # cp /usr/share/doc/heartbeat-2.1.3/ha.cf/etc/ha.d/
- # cp /usr/share/doc/heartbeat-2.1.3/authkeys/etc/ha.d/
- # cp /usr/share/doc/heartbeat-2.1.3/haresources/etc/ha.d
复制代码 2.
编译安装Heartbeat
下载相关软件包:
http://linux-ha.org/DownloadSoftwarehttp://www.packetfactory.net/libnet/dist/libnet.tar.gz编译安装 - #tar-xvzf libnet.tar.gz
- #cdlibnet
- #./configure
- #make;makeinstall
- #groupadd-g 694 haclient
- #useradd-u 694 -g haclient hacluster
- # tar-xvzf heartbeat-2.1.3.tar.gz
- # cdheartbeat-2.1.3
- #./ConfigureMe configure
- #make;make install
- #cpdoc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
- #cpldirectord/ldirectord.cf /etc/ha.d/
复制代码 【注意】heartbeat
软件包在RHEL
或者CentOS
安装盘中都能找到。所需软件包:heartbeat
、libnet
、net-snmp
、net-snmp-libs
、perl-Compress-Zlib
、perl- HTML-Parser
、perl-HTML-Tagset
、perl-libwww-perl
、perl-Mailinuxtoneools
、perl- TimeDate
、perl-URI
、ipvsadm.
以上软件包,有的在rhel5
光盘中,有的要在网上搜索的。四. 配置Heartbeat实现服务高可用性.
1.
分别配置两台HA
的主机名.
#vi /etc/hosts
- 192.168.1.102primarylb.linuxtone.org
- 192.168.1.103backuplb.linuxtone.org
复制代码 2.
/etc/ha.d/ha.cf
配置介绍#cd /etc/ha.d
#cat ha.cf|grep -v ^#
- logfile/var/log/ha-log
- logfacility
- local0
- keepalive2
- deadtime30
- warntime10
- initdead120
- udpport694
- baud
- 19200
- serial
- /dev/ttyS0
- # Linux
- #ucasteth2 10.0.0.3
- ucasteth0 192.168.1.103
- auto_failbackon
- watchdog/dev/watchdog
- crm on
- nodeprimarylb.linuxtone.org
- nodebackuplb.linuxtone.org
- ping192.168.1.103
- ping_grouplbgroup 10.0.0.1 10.0.0.2
- ping_grouplbgroup 192.168.1.102 192.168.1.103
- respawnhacluster /usr/lib/heartbeat/ipfail
- apiauthipfail gid=haclient uid=hacluster
复制代码 3./etc/ha.d/authkeys
#vi authkeys
#chmod 600 authkeys
4./etc/ha.d/haresources
# cat haresources |grep -v"#"
- primarylb.linuxtone.org lvsldirectord
复制代码 5.
建立软连接让HA自动接管lvs-dr.sh,ldirectord等资源. - #ln -s /etc/init.d/lvs /etc/ha.d/resource.d/ //etc/init.d/lvs 存放LVS启动相关脚本
- #ln -s /usr/sbin/ldirectord /etc/ha.d/resource.d
复制代码 6
.采用Heartbeat2.x style,
利用crm
来管理资源.
- #/usr/lib/heartbeat/haresources2cib.py -stout -c /etc/ha.d/ha.cf/etc/ha.d/haresources
复制代码 将生成的cib.xml
文件在/var/lib/heartbeat/crm
目录【注意】关于crm
(ClusterResource Manager
):crm
资源配置方法是在新的版本中引入的,如果想使用该格式来配置资源(ip
,服务,共享磁盘等),可以参看配置示例:http://www.linux-ha.org/v2/Examples/Simple
。
/var/lib/heartbeat/crm/cib.xml 文件的作用与/etc/ha.d/haresources相同,是二者择一的关系。# cat/dev/null > haresources
//
把haresources
清空,采用crm
来管理资源7. /etc/ha.d/ldirectord.cf
配置 - # GlobalDirectives
- checktimeout=3
- checkinterval=1
- fallback=127.0.0.1:80
- autoreload=yes
- logfile="/var/log/ldirectord.log"
- #logfile="local0"
- emailalert="cnseek@gmail.com"
- emailalertfreq=3600
- emailalertstatus=all
- quiescent=no
- # Samplefor an http virtual service
- virtual=192.168.1.106:80
- real=192.168.1.104:80 gate
- real=192.168.1.105:80 gate
- #fallback=127.0.0.1:80gate
- #service=http
- #request="index.html"
- #receive="Test Page"
- #virtualhost=some.domain.com.au
- scheduler=wrr
- persistent=5
- #netmask=255.255.255.255
- protocol=tcp
- checktype=connect
- checkport=80
- #request="index.html"
- #receive="TestPage"
- #virtualhost=www.x.y.z
复制代码 【注意】Ldirectord
的作用是监测Real Server
,当RealServer
失效时,把它从Load Balancer
列表中删除,恢复时重新添加,在安装heartbeat
时已经安装了Ldirectord.
配置中quiescent=no
设置实现如果Realserver
机器down
掉以后,立即从IPVS
列表中删除,恢复时重新添加.
8.
启动Heartbeat
服务# /etc/init.d/heartbeat start
五.测试Heartbeat及日志分析1.
测试串口线配置是否正常串行连接通过两个节点的串口,使用一根直连线缆将它们连接起来。现在测试串行连接,如下所示:在 primarylb
(接收者)上输入以下内容:cat < /dev/ttyS0
在backuplb
(发送者)上输入以下内容:echo "Serial Connection test!Welcome
http://www.linuxtone.org !"> /dev/ttyS0
2.
如果主节点需要维护时,可先将其转移到备份服务器上/usr/lib/heartbeat/hb_standby(hb_standby
命令把资源强迫到迁移到备份服务器)
如果主节点要切回来掌管服务:/usr/lib/heartbeat/hb_takeover
3.
拔掉网线,测试在primary
节点的网络断开后的切换情况4.
停掉primary
的heartbeat(/etc/init.d/heartbeat stop)
查看backup
是否能正常接管资源5. shutdown primary
主机,测试是否能够正常切换,基本上和上面测试2
差不多。【注意】# tail -f /var/log/messages
//
在两台负载均衡服务器上注意查看日志变化来排错。六. 相关注意事项及参考1.
项目实施过程遇到的问题及总结.
【经验分享】【以下是项目中遇到的两个问题,提出方便对你有帮助】a)
假如两台VS
之间使用的互备关系,那么当一台VS
接管LVS
服务时,可能会网络不通,这时因为路由器的MAC
缓存表里无法及时刷新MAC.
关于vip
这个地址的MAC
地址还是替换的VS
的MAC
,有两种解决方法,一种是修改新VS
的MAC
地址,另一种是使用send_arp /arpiing
命令.
以arping
命令为例.
- /sbin/arping -I eth0 -c 3 -s ${vip}${gateway_ip} > /dev/null 2>&1
- 例如:
复制代码 - /sbin/arping -I eth0 -c 3 -s 192.168.1.6192.168.1.1
复制代码 b)
某台Realserver
服务down
掉以后如何从IPVS列表自动中删除恢复时如何自动添加?配置ldirectord.conf
quiescent=no
或 echo 1 >/proc/sys/net/ipv4/vs/expire_nodest_conn
2
.ha.cf
相关注释auto_failback
设置为on
时,一旦主节点重新恢复联机,将从从节点取回所有资源。Stonith
设备是一种能够自动关闭电源来响应软件命令的设备Watchdog
在实现上可以是硬件电路也可以是软件定时器,能够在系统出现故障时自动重新启动系统。3
.lvs
状态查看操作步骤详细到命令行级别查看LVS
的连接情况:ipvsadm -L -n
查看LVS
的吞吐量情况: ipvsadm -L -n --rate
查看LVS
的统计信息:ipvsadm -L -n --stats
实时查看LVS
连接状态变化: watch ipvsadm –ln
4.
附上LVS
(DR
)脚本 5. 关于ldirectord.cf文件详解:http://bbs.linuxtone.org/thread-1388-1-1.html
LVS高可用性方案汇总: http://bbs.linuxtone.org/thread-1402-1-1.html[推荐]
LVS负载均衡资料汇总: http://bbs.linuxtone.org/thread-1191-1-1.html[推荐]
更多的资料请参考: http://bbs.linuxtone.org/forum-26-1.html
6. 联系我们[如果你遇到问题欢迎联系我们]:
IT运维专家网 http://www.linuxtone.orgMail: cnseek@gmail.com
本文PDF下载: [attach]388[/attach]
本文相关脚本下载: [attach]389[/attach]
评论