利用heartbeat实现高可用集群

利用heartbeat实现高可用集群

heartbeat是一个可以提供messaging  Layer层的软件,他有三个版本(v1、v2、v3),本实验使用heartbeat v2版本,由于v2版本自带了2个资源管理器heartbeat和crm,因此,本文会分别实现2个不同的资源管理器来实现高可用集群。

 

一、利用heartbeat自带的资源管理器heartbeat来实现高可用集群

1、实验环境

本次实验作者是在RHEL 5.8系统上实现的,并且是在vm虚拟机上实现的。每一个虚拟机上面只需要一个网卡即可,网卡模式可以是桥接也可以是仅主机模式。

本次实验需要用到的ip地址

VIP:192.168.0.25

RS1:192.168.0.111  对应的主机名为ha1.xsl.com

RS2:192.168.0.200  对应的主机名为ha2.xsl.com

 

2、各个节点的时间必须要同步

由于高可用集群的需要根据心跳信息来判断对方是否正常,且心跳信息传递的时间间隔默认是以秒为单位的,因此,如果两个节点的时间不一致会导致该实验失败。

可以配置ntp服务来使各个节点同步,关于ntp服务在此处不介绍,配置比较简单

 

3、主机名要保持一致

使用hostname得到的结果要和uname  -n命令得到的结果保持一致

 

4、将主机名由/etc/hosts文件来解析

将ha1.xsl.com和ha2.xsl.com的主机名和ip的对应关闭配置在本地的hosts文件中,记住,不应该将高可用节点的主机名由dns来解析,否则一点dns出现故障,你的高可用服务也就不可用呢!

 

5、配置ssh双机互信

在RS1上(ip为192.168.0.111)配置如下:

#ssh-keygen -t rsa  -N  ''

#ssh-copy-id  -i  /root/.ssh/id_rsa.pub   192.168.0.200

 

在RS2上(ip为192.168.0.200)配置如下:

#ssh-keygen  -t  rsa -N ''

#ssh-copy-id  -i  /root/.ssh/id_rsa.pub   192.168.0.111

 

使用ssh连接测试一下,如果不需要密码,则表示测试成功

 

6、安装heartbeat相关软件

heartbeat-ldirectord - Monitor daemon for maintaining high availability resources, 为ipvs高可用提供规则自动生成及后端realserver健康状态检查的组件;

heartbeat-2.1.4-11.el5.i386.rpm    这个heartbeat核心组件

heartbeat-gui-2.1.4-11.el5.i386.rpm    这个是一个提供gui方式的集群管理界面工具

heartbeat-ldirectord-2.1.4-11.el5.i386.rpm     为ipvs高可用提供规则自动生成及后端realserver健康状态检查的组件;
heartbeat-pils-2.1.4-11.el5.i386.rpm      其他下面的都是依赖包

heartbeat-stonith-2.1.4-11.el5.i386.rpm

libnet-1.1.6-7.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

 

安装命令   yum   -y  --nogpgcheck install  *.rpm

 

7、安装httpd服务

#yum  install  httpd

 

8、heartbeat的配置文件

heartbeat有三个配置文件,分别为:

authkeys :这是一个密钥文件,用于确保其他非高可用集群节点随便加入到高可用集群中去。因此,彼此各个节点之间都是以加密的形式来传输数据的。

ha.cf:这个heartbeat服务的配置文件,例如定义心跳信息等等

haresources:这是一个资源管理配置文件,里面定义了资源如Vip、服务(如httpd服务)等等信息

 

在/etc/ha.d/命令下默认没有这三个文件,需要从其他地方复制过来,如:

#cp  /usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf,haresources}    /etc/ha.d/

 

9、修改三个配置文件

First修改authkeys文件

里面只有三种加密方式,这里选择md5加密方式,格式如下

vim  authkeys

auth  3

3  md5   这里是一堆随机数

生产一堆随机数方式

dd  if=/etc/urandom  bs=1 count=512   | MD5sum

配置完成后需要修改该文件的权限为600

#chmod 600  authkeys

否则,会出现如下报错信息

heartbeat[27496]: 2011/11/14_18:26:11 ERROR: Bad permissions on keyfile [/etc/ha.d/authkeys], 600 recommended.

 

second修改ha.cf文件

#crm on    #这个需要添加,指要用heartbeat V2版的资源管理器crm,默认使用的是heartbeat,在这里需要注释掉,等到后面的实验使用crm来实现的时候,需要启动该选项。

logfile        /var/log/ha-log ##可以定义日志自定义存放位置,默认是/var/log/message

#logfacility     local0  ##日志发送的facility,这个和上面的只能选择一个

keepalive 2         ##发送心跳信息间隔

deadtime 15         ##多少秒收不到心跳就以为它挂点了

warntime 5          ##多少秒收不到心跳就发出警告信息

initdead 120        ##服务启动或者重启多少秒之后就认为对方挂了

udpport        694  ##心跳信息发送端口

mcast eth0 225.1.2.1 694 1 0 ##多播组,使用哪种方式来告知VIP的mac地址,一旦vip所在的主机发生改变(即vip所对应的mac地址也会发生改变),那么vip上一跳的设备(如路由器)所缓存的arp缓存也要发生改变,否则可能导致通信错误。上面有详细的参数解释

auto_failback on    ##主节点挂点,从节点代替,当主节点又正常了,是否归还资源

node   ha1.xsl.com  ##定义集群节点,这里的节点名称要和hostname保持一致

node   ha2.xsl.com  ##定义集群节点

ping 172.16.0.1     ##最好是一个网关

compression     bz2 ##是否压缩心跳报文

compression_threshold 2 ##大于多少才压缩

 

finish配置资源文件haresources

这里有许多配置资源的格式,可以参考上面的提示信息进行配置

这里我配置的资源格式为:

ha1.xsl.com    IPaddr::192.168.0.25/16/eth0    httpd

格式说明:

ha1.xsl.com为主节点,这里只需要配置主节点,其他节点不需要配置

IPaddr:这里是ocf风格的资源,这些资源位于/etc/ha.d/rc.d/目录下,IPadd后面接了2个“冒号”,表示为该资源的参数(ocf风格的脚本是可以接受参数的),如果有多个参数,则需要使用2个冒号隔开,后面的地址(192.168.0.25)是VIP,且工作在eth0这个接口的别名上(如果不配接口,则VIP会自动配置在与它在同一个网段内的接口的别名上)。如果有多个资源则使用空格隔开,这里的httpd就是I个资源。

 

建议:配置完成上述步骤后,可以先把httpd服务开启,手动测试一下,看看可不可以正常访问,如果可以访问则继续下面的步骤;否则,先排除看看httpd服务配置是否有问题。还有就是此处不要把heartbeat服务启动哦!!!

 

10、关闭heartbeat和httpd开启自动启动功能

chkconfig  heartbeat  off

chkconfig  httpd  off

 

11、启动heartbeat服务和httpd服务

service heartbeat  start这个服务需要在所有的节点上开启

service  httd  start  这个服务只需要在主节点上开启

 

按照上面的步骤,利用heartbeat就可以实现一个高可用集群服务

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(crm,heartbeat)