一、实验目的
为了实现在一台Director出现故障后,仍能够正常的提供服务,因此把Director做成高可用集群服务,但是如果后台的RealServer出现问题,Director不能够知道,因此需要借助于Heartbeat-ldirectord来自动检测后台RealServer的健康状况,而且还能够自动结合Director实现高可用集群服务。
二、实验拓扑如下图
三、实验描述
在这个实验中有两台Director和两台RealServer具体IP如上图所示,然后基于web服务来实现实验结果。
四、实验准备
#vim /etc/sysconfig/network 修改为 hostname=node1 #hostname node1 #unanme -n
#ssh-keygen -t rsa #ssh-copy-id -i .ssh/id_rsa.pub root@node2 #ssh node2 'ifconfig' 测试连接
#ssh-keygen -t rsa #ssh-copy-id -i .ssh/id_rsa.pub root@node1 #ssh node1 'ifconfig' 测试连接
五、实验步骤
#yum -y install httpd #service httpd start #echo "<h1>RSS1</h1>" > /var/www/html/index.html //RealServer1 #echo "<h1>RSS2</h1>" > /var/www/html/index.html //RealServer2
#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore #echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#ifconfig lo:0 172.16.88.1 broadcast 172.16.88.1 netmask 255.255.255.255 up #route add -host 172.16.88.1 dev lo:0
#ifconfig eth0:1 172.16.88.1 broadcast 172。16.88.1 netmask 255.255.255.255 up #route add -host 172.16.88.1 dev eth0:1
#echo 1 > /proc/sys/net/ipv4/ip_forward
heartbeat-pils-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm heartbeat-2.1.4-9.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm heartbeat-gui-2.1.4-9.el5.i386.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm #yum --nogpgcheck localinstall *.rpm
#cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/ #vim /etc/ha.d/ha.cf 启用如下内容 keeplive 2 //连接时长 deadtime 30 //多长时间失效 bcast eth0 //广播的网卡 udpport 694 //端口 auto_failback on //是否自动转发 ping 172.16.0.1 //两个节点都能ping通的IP node node1 //添加节点 node node2 crm on //启动gui界面 #cp /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/ #vim /etc/ha.d/haresources 添加如下内容 node1 172.16.200.1/255.255.255.255/eth0/172.16.255.255
#cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
#dd if=/dev/urandon count=1 bs=512 | md5sum 生成密码串
#vim /etc/ha.d/authkeys
auth 3
3 md5 生成的密码串
#chmod 600 /etc/ha.d/authkeys
#cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d vim ldirectord.cf checktimeout=3 超时时间 checkinterval=1 每隔多长时间检查一次 autoreload=yes 自动加载 quiescent=yes 静默模式
virtual=172.16.88.1:80 // 虚拟服务 real=172.16.26.1:80 gate // gate表示是dr模型 real=172.16.26.2:80 gate real=192.168.6.6:80 gate fallback=127.0.0.1:80 gate service=http request=".test.html" 做健康状况检测要获得的页面 receive="ok" 需要检测到的字符串 scheduler=rr protocol=tcp checktype=negotiate checkport=80
#passwd hacluster
#service heartbeat start #ssh node2 '/etc/rc.d/init.d/heartbeat start' #hb_gui & 启动gui如下图,输入密码进入
进入界面后如下图
9.在添加资源之前应保证两台Director的ldirectord的服务是停止的,然后设置成开机自动停止服务。
#chkconfig ldirectord off
10.添加资源
在上图中Resource处右键点击添加ldirector资源,如下图所所示
成功添加后在主节点上使用Ipvsadm查看是否有规则,结果如下图
由于运行还要依赖于VIP,所以接下来要添加VIP资源,特别注意的是,这里一定要添加lvs_support并设为ture,具体添加如下图所示
添加资源完成后,启动添加的资源,查看资源运行的节点,然后ip addr show 命令查看添加的VIP,然后在浏览器查看结果如下图所示。
11.然后模拟Director和Realserver其中有一个出现故障
首先使Director的主节点改为从节点,然后资源会自动转到节点二上,因为我们在前面设置了,自动转移,具体如下图所示:
在后在浏览器浏览结果正常显示
然后使用iptables在其中的RealServer上拒绝80端口的来访,则会自动检测,然后在浏览器中则不能被显示了。
#iptables -A INPUT -p tcp -dport 80 -j DROP
清除规则后,又能正常显示,所以ldirector就实现了自动检测后台realserver的健康状况的功能。
本文转自 沐木小布丁 51CTO博客,原文链接:http://blog.51cto.com/sxhxt/954545