obeckham 发表于 2019-1-6 09:24:49

基于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]
查看完整版本: 基于heartbeat v2与heartbeat