基于heartbeat v2与heartbeat
实验环境:四台虚拟机,两台为LVS,两台为web服务器。系统为redhat 5.8。使用图形窗口来配置。http://blog.运维网.com/attachment/201208/214132595.jpg
此次实现只对lvs做高可用,且lvs工作在DR模型中。DR模型怎么配置此次实现不在详细说明,请参照http://bingodeng.blog.运维网.com/1038075/948738。
一,先对we1,web2安装好httpd软件,并且能够正常访问。还需要修改内核参数,对web1,web2,测试好后,请务必停止httpd服务。
二,分别对lvs两台服务器测试,并用vip能正常访问到。
三,上面两步做完之后,对lvs的yum源配置好,并对lvs做双机互信。双机互信参考此文http://bingodeng.blog.运维网.com/1038075/954107
四,在两台lvs下载下列rpm包,并用yum -y --nogpgcheck localinstall *.rpm安装。
[*]heartbeat-2.1.4-9.el5.i386.rpm
[*]heartbeat-pils-2.1.4-10.el5.i386.rpm
[*]heartbeat-devel-2.1.4-9.el5.i386.rpm
[*]heartbeat-stonith-2.1.4-10.el5.i386.rpm
[*]heartbeat-gui-2.1.4-9.el5.i386.rpm
[*]libnet-1.1.4-3.el5.i386.rpm
[*]heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
[*]perl-MailTools-1.77-1.el5.noarch.rpm
五,安装成功后需要给heartbeat,heartbeat-ldirector提供配置文件
[*]# cd /etc/ha.d/
[*]# cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
[*]# cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
[*]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
六,注意我的两台lvs的主机名分别为director1,director2。对上面的三个配置文件做以下修改:
(1)vim /etc/ha.d/ha.cf
[*]keepalive 2表示每隔多长时间向对方传递一个心跳消息,启用
[*]deadtime30 备用节点在多长时间内收不到对方的心跳信息,则认为对方有故障,启用
[*]warntime 10 多长时间发出警告,启用
[*]initdead 120s 默认是120表示第一次等待多长时间等待别的节点加入。如果超过这个时间还没加入,
[*]则就只认为只有自己一个节点
[*]udpport 694 心跳信息传递的端口,专门留给heartbeat传递心跳信息
[*]bcast eth0,启用广播方式。也可以使用单播。通过eth0来广播
[*]node director1
[*]node director2定义节点的名称
[*]auto_faliback 0n 表示当这个节点又重新工作时,把资源抢回来了。启用
[*]ping 172.16.0.1 这个IP是网关,能ping通,表示网络正常。如果接收不对方的心跳则认为对方有故障,启用
[*]debug 1如果启用可以记录更详细的信息,当出现故障可以启用。
[*]compression bz2 启用压缩,采用bz2
[*]compression_threshold 2只有大于2k才压缩,启用
[*]crm yes(respawn) 添加这一行,表示启用crm功能,可以使用crm命令,并启用图形终端,这行必须添加
(2)vim /etc/ha.d/authkeys添加下面两行,并此修改权限chmod 600 /etc/ha.d/authkeys,如果不修改无法启动heartbeat服务。
[*]auth 1
[*]1md5 294f6577d231a3bedaf26540a4faa660 通过下面命令生成
[*]# dd if=/dev/urandomcount=1 bs=512 |md5sum
(3)vim /etc/ha.d/ldirectord.cf
[*]# Global Directives (表示全局配置属性)
[*]checktimeout=3 检查realserver超时时间,如果3秒内没有响应,则认为rs服务器出现故障
[*]checkinterval=1 每隔一秒钟检查一次
[*]#fallback=127.0.0.1:80
[*]autoreload=yes当前配置文件发生改变会自动加载
[*]logfile="/var/log/ldirectord.log" 启用日志
[*]#logfile="local0"
[*]#emailalert="admin@x.y.z"
[*]#emailalertfreq=3600
[*]#emailalertstatus=all
[*]quiescent=yes工作在安静模式
[*]virtual=172.16.150.1:80
[*] real=172.16.150.30:80 gate
[*] real=172.16.150.31:80 gate
[*] #fallback=127.0.0.1:80 gate real都不在线时,将服务转到本机
[*] service=http 有监测后台rs的状态,基于http协议来检测
[*] request=".test.html" 最好不要使用主页,使用一个隐藏的页面
[*] receive="ok" 从检测页中获取的信息,如果能获取到则rs正常,否则就挂机了
[*] #virtualhost=some.domain.com.au 虚拟主机名
[*] scheduler=rr 使用哪种算法
[*] #persistent=600是否启用持久性
[*] #netmask=255.255.255.255 虚拟ip的掩码
[*] protocol=tcp
[*] checktype=negotiate 检测方式,协商的方式
[*] checkport=80
[*] #request="index.html"
[*] #receive="Test Page"
[*] #virtualhost=www.x.y.z
在web1,web2,分别建立
# vim /var/www/html/.test.html 建立测试页面,里面的内容必须包含ok。
# vim /var/www/html/.test.html
(4)将三个文件复制director2上
[*]# scp authkeys ldirectord.cf ha.cf director2:/etc/ha.d/
(5)启动heartbeat服务,在同一台主机启动与停止heartbeat服务
[*]# /etc/init.d/heartbeat start
[*]Starting High-Availability services:
[*]
[*]# ssh director2/etc/init.d/heartbeat start
七,下面开始使用图形界面配置:
(1)给hacluster用户设定密码,登录图形的时候需要用这个用户登录,且需要密码
# passwdhacluster
# ha_gui & 启用图形终端,后台运行这个进程。我使用的远程连接软件Xmanager Enterprise 4,如果你使用的软件不支持启动图形界面,需要到虚拟机里面执行此命令,当执行完后,会弹出一个登录窗口。
http://blog.运维网.com/attachment/201208/203857553.jpg
http://blog.运维网.com/attachment/201208/204020797.jpg
登录之后,可以看到当前两个集群节点的状态
(2)定义资源vip与ldirectord两个资源,点Resources。
http://blog.运维网.com/attachment/201208/204831860.jpg
选择native类型,Resouce ID,自己定义
http://blog.运维网.com/attachment/201208/210503336.jpg
定义资源ldirector
http://blog.运维网.com/attachment/201208/211631606.jpg
此时完成两个资源的定义。让两个资源生效,如下图点,右击,点start。两个资源不会同时运行在同一个节点上,那么此时需要对两个节点定义约束关系。
http://blog.运维网.com/attachment/201208/211836370.jpg
对资源定义约束关系:分别定义顺序约束,与排列约束。顺序约束表示,两个资源哪个资源先启动。而排列约束定义两个资源要不要同时运行在一个节点,还是不能运行在同一个节点上。
(1)先定义顺序约束:order。ldirectord比vip先动。ldirectord控制的是ipvsadm的规则。
http://blog.运维网.com/attachment/201208/212905765.jpg
(2)定义排列约束:ldirectord与vip必须要在一起,才有意义。
http://blog.运维网.com/attachment/201208/213422380.jpg
到此结束,查看vip,不能用ifconfig查看,需要用ip addr show来查看。查看ipvsadm -Ln,有没有生效。
页:
[1]