本章主要配置heartbeat v2基于crm+hb_gui接口,配置高可用httpd。理解排列约束、顺序约束、位置约束

Heartbeat


如何安装heartbeat v2、httpd、nfs、配置心跳连接、ssh密钥通信、同步时间、添加名称解析、配置yum源等请参照:

>> Linux高可用集群方案之配置heartbeat v2基于haresources配置文件的httpd高可用集群

http://ccschan.blog.51cto.com/11854461/1922966


 ll  本文导航 

  · 前期准备及相关说明

  · 安装hb_gui接口

  · 基于crm+hb_gui接口配置高可用集群


 ll  要求 

完全掌握heartbeat v2基于crm+hb_gui接口配置httpd高可用服务,理解排列约束、顺序约束、位置约束


  前期准备 

1、heartbeat服务主机规划

主机接口ip服务用途
node1.chanedu.cometh0192.168.1.131

heartbeat

httpd

mysqld

ipvs

LAN数据转发

eth1192.168.2.131心跳信息链路

vip192.168.1.180提供给外部访问httpd的ip
node1.chanedu.cometh0192.168.1.132

heartbeat

httpd

mysqld

ipvs

LAN数据转发

eth1192.168.2.132心跳信息链路
shared.chanedu.cometh0192.168.1.150nfsLAN数据转发

2、架构图

wKioL1kPLzzDNT7dAAIw_DfsRMs892.jpg

3、在heartbeat v2.x版本中,如果要使用crm做为集群资源管理器,必须ha.cf配置中启动crm。如在ha.cf中添加crm配置,参数为“on”,意思是使用crm作为集群管理器。crm通过mgmtd监听在tcp:5560的套接字上。

# vim /etc/ha.d/ha.cf

wKioL1kTNEDTmTaUAAAN2jr9zvk978.png


4、在heartbeat v2中,有一些比较使用的脚本,安装heartbeat时,这些脚本的默认位置在

/usr/lib64/heartbeat/,其中,有几个脚本需要了解下

ha_propagate    

运行该脚本将会把/etc/ha.d/{ha.cf,authkeys}这两个配置文件直接复制到其他节点,并将heartbeat设置2,3,4,5系统级别开机时自动启动。需要注意的是,如果没有配置节点通过ssh加密通信,那么运行这个密钥可能需要输入N此密码,所以,在运行之前,请配置好节点使用ssh加密通信。

haresources2cib.py   

运行该python脚本需要配置python环境,该脚本将自动把/etc/ha.d/haresources配置文件转换成cib.xml的格式,要只知道,heartbeat v2要使用crm集群资源管理器,是必须要有xml格式的配置文件的,所以,这个脚本非常有用。


  安装hb_gui接口 

1、heartbeat v2.x的hb_gui接口安装rpm为:heartbeat-gui-2.1.4-12.el6.x86_64.rpm

安装该包需要安装pygtk2-libglade-2.16.0-3.el6.x86_64.rpm包解决依赖关系。

可以使用yum -y install pygtk2-libglade 直接安装,这里我在本地安装该依赖包。

现在,在node1和node2上分别安装heartbeat_gui

# rpm -ivh pygtk2-libglade-2.16.0-3.el6.x86_64.rpm 
warning: pygtk2-libglade-2.16.0-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:pygtk2-libglade        ########################################### [100%]
# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:heartbeat-gui          ########################################### [100%]

2、编辑/etc/ha.d/haresources文件,添加一行“crm    on”,启动集群资源管理器。

# vim /etc/ha.d/ha.cf

wKioL1kTNEDTmTaUAAAN2jr9zvk978.png

3、运行ha_propagate复制ha.cf和authkeys,haresources.py 这两个脚本

# /usr/lib64/heartbeat/ha_propagate

wKiom1kTNNeDjjXnAAAqWhSV05U546.png

# /usr/lib64/heartbeat/haresources2cib.py

注意:cib.xml配置文件并没有保存在/etc/ha.d/目录中,运行该python脚本后,生成cib.xml配置文件保存在/var/lib/heartbeat/crm

wKioL1kUbuizjYqnAAAJupg7F_M890.png


4、启动heartbeat服务,在启动之前,需要将node1和node2节点中/etc/ha.d/resources这个v1.x版本的配置文件剪切至其他目录,以免启动heartbeat服务时,会造成意外情况。

# mv /etc/ha.d/haresources /root/
# ssh node2 'mv /etc/ha.d/haresources /root/'

启动heartbeat服务

wKioL1kUc9GgjzEpAAAS-kXq1go073.png

使用ss命令查看heartbeat通mgmtd进程已经在监听tcp:5560端口了

wKioL1kUeJjhwqxOAAATVzF3kSo581.png

我们还可以通过crm资源管理器集成的命令“crm_mon”监控集群节点状态。它能显示当前DC,该集群运行几个节点,是否在线,每隔多久刷新一次集群节点状态信息。

# crm_mon

wKiom1kTNZOiVSiUAAA64CBubfY946.png


5、创建管理集群的用户,安装heartbeat时,默认会自动创建一个hacluster用户

wKioL1kTNfeTNq0sAAAWAf_fWS8433.png

给hacluster用户添加密码,使用hb_gui图形界面是,需要此用户和密码登陆

# passwd hacluster
Changing password for user hacluster.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.


  基于crm+hb_gui接口配置http高可用集群 

1、登录打开图形界面接口并登录

# hb_gui &

wKioL1kXEMmQqZWAAABayT5iZaY846.pngwKiom1kXEI-xBCLTAACIwWQQ-dY859.png

2、添加主资源webip、webstore、webserver。注意添加的顺序,要根据IP=>文件系统=>服务这样顺序啦添加。

wKioL1kXClHAw2JcAADQMcnWX5A876.png

这里使用IPaddr和IPaddr2的区别是使用的命令不同。IPaddr使用ifconfig添加vip,IPaddr2使用ip addr 添加vip,这里使用IPaddr2。

ip:提供给外部客户端访问的ip地址

nic:根据那块网卡添加vip,为eth0

cidr_netmask:子网掩码的长度,为24

wKioL1kXClHA9-CGAADEPo2MSoY086.png

默认是不启动的。

wKiom1kXClLzOh-YAAD-OXHl298004.png

wKiom1kXClKBEJBvAADfhUvmDIY612.png

接着添加lsb资源,这里选择httpd,实际就是/etc/rc.d/init.d/httpd 这个脚本文件

wKioL1kXClOjbh4oAACioV0_zCU952.png

资源添加完成

wKioL1kXClPxDPbWAAEEWrGY4Zc998.png

启动webip和webserver。

启动之后,我们发现这两个资源分别运行在node1和node2上,这是为什么。因为我们所定义的是本地资源,并没有添加约束,所以,资源均衡的运行在两个节点上了。

此时,当我们访问192.168.1.180时,会返回页面吗?

显然不会,这里我们访问192.168.1.180时,此IP资源在node1上,但是node1上并没有运行webserver资源,所以,这里并没有达到我们想要的高可用效果。

wKioL1kXEd-TRd1tAAEbOty6KWI530.png

如果将其中的一个节点转换为standby,那么可以正常访问了吗?

当然可以,我将node2转为standby备节点,资源将会转移到node1上。

wKioL1kXFBqBOJEHAAD9ipW8OMA993.png



· 定义排列约束 

使webip和webserver两者永远在一起。

wKioL1kXClTjlK03AADxv3a6Q3A377.png

wKioL1kXGI6glV2sAAFDSPT4b0Y527.png

wKioL1kXGWfS2xzbAAEqM3Fb2Oo679.png

·定义位置约束 

使某个资源倾向于运行在哪个节点

wKiom1kXClfw1Ju6AAEEjj66wOE713.png

wKioL1kXClfhE57IAAEK-UVcBso904.png

wKioL1kXCljxjOrhAAF17YiMW6c113.png

wKiom1kXG5zAbCEyAAEkKHO_Prw042.png

wKioL1kXG9nQrdWcAAEm7LQKtFQ041.png

· 定义顺序约束 

wKioL1kXClnCx4QCAAEUSzBPUZo758.png

wKiom1kXClmQsX8nAAFd550VtP8535.png




  基于crm+hb_gui接口配置http+mysql+nfs高可用集群 


  基于crm+hb_gui接口配置ipvs高可用集群 


  基于crm+hb_gui+ldirectored接口配置ipvs高可用集群