您的位置:首页 > 运维架构 > 网站架构

Heartbeat-ldirectord+LVS-DR实现Director高可用

2012-08-04 22:19 567 查看
一、实验目的

为了实现在一台Director出现故障后,仍能够正常的提供服务,因此把Director做成高可用集群服务,但是如果后台的RealServer出现问题,Director不能够知道,因此需要借助于Heartbeat-ldirectord来自动检测后台RealServer的健康状况,而且还能够自动结合Director实现高可用集群服务。

二、实验拓扑如下图





三、实验描述

在这个实验中有两台Director和两台RealServer具体IP如上图所示,然后基于web服务来实现实验结果。

四、实验准备

1.修改两台Director的主机名,使其和uname -n的保持一致
#vim /etc/sysconfig/network 修改为 hostname=node1
#hostname node1
#unanme -n

2.修改hosts文件,因为高可用集群服务的解析依赖与自己的hosts文件
编辑Director1、2的/etc/hosts文件,添加如下内容
172.16.29.1 node1
172.16.29.2 node2
3.配置两个Director的系统时间,使两台的时间保持一致
4.配置Director的ssh,以实现双机互信
Director1
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node2
#ssh node2 'ifconfig' 测试连接

Driector2
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node1
#ssh node1 'ifconfig' 测试连接

五、实验步骤

配置两台RealServer
1.配置httpd
#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

2. 设置arp_ignore和arp_announce
#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

3.配置VIP
#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

配置Director
1、配置VIP(两台一样)
#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

2、打开路由转发功能
#echo 1 > /proc/sys/net/ipv4/ip_forward

3.安装heartbeat以及所用到的包
可以把如下包下到一个目录下
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

4.修改配置文件
#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

5、为集群指定认证方式
#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

6、配置ldirectord
#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


7.为hacluster用户添加密码以方便登陆gui界面
#passwd hacluster

8.启动服务(需要注意的是在作为主节点上启动两台的服务)
#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的健康状况的功能。
本文出自 “沐木” 博客,请务必保留此出处http://sxhxt.blog.51cto.com/5126000/954545
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: