heartbeat(一)heartbeat v2 haresource配置高可用集群

时间:2021-12-17 23:05:54

heartbeat(一)

heartbeat v2 haresource配置高可用集群

 

      上一篇《LINUX集群—高可用 高可用集群》认识高可用集群的一些基本概念,下面将会用heartbeat v2及版本中的haresource配置简单的高可用WEB集群。

1、高可用集群架构设计

      通过上一篇我们知道,heartbeat v2提供了完整的高可用方案,既包含了Messaging Layer,又包含CRM,其中CRM有haresource(默认)和crm,本文基于haresource配置,具体架构资源如下:

heartbeat(一)heartbeat v2 haresource配置高可用集群

1、节点主机系统:RHEL 5.8 64bit

2、高可用集群软件:Heartbeat v2 haresource

3、两台节点主机node1,node2:

Node1: IP:192.168.18.241 host name:node1.tjiyu,com;

Node2: IP:192.168.18.242 host name:node2.tjiyu.com;

VIP: 192.168.18.240

4、所提供服务:WEB(httpd)

2、heartbeat配置前所需要的准备

2-1、配置IP、安装WEB服务、关闭防火墙

    按照上面设计配置两台节点主机IP,并能ping测试:

heartbeat(一)heartbeat v2 haresource配置高可用集群

     分别安装httpd服务,为方便测试,这里两节点分别提供不同的提示页面,然后手动访问测试,测试通过后关闭httpd,禁止开机启动:

heartbeat(一)heartbeat v2 haresource配置高可用集群

      关闭selinux和防火墙:

           setenforce 0

           service iptables stop

2-2、配置各节点名称

      集群信息传递需要各节点间能相互识别,而节点间的识别是靠节点名称,同时保证每个节点的名称都得能互相解析为节点主机的IP地址。

      这个最好不用DNS,因为DNS服务也需要提供高可用才行,否则DNS出问题就导致整个集群不能可用。所以直接在各节点中配置一样的/etc/hosts文件,必须保证/etc/hosts中主机名的正反解析结果必须跟"uname -n"执行结果保持一致。

1、配置节点名称如下:

[root@localhost ~]# vim /etc/sysconfig/network

[root@localhost ~]# hostname node2.tjiyu.com

[root@localhost ~]# uname -n

node2.tjiyu.com

heartbeat(一)heartbeat v2 haresource配置高可用集群

heartbeat(一)heartbeat v2 haresource配置高可用集群

2、node1配置/etc/hosts文件,并远程复制到node2上, 然后node1和node2上都要ping 对方名称测试:

[root@node1 ~]# vim /etc/hosts

[root@node1 ~]# scp /etc/hosts node2.tjiyu.com:/etc/

[root@node1 ~]# ping node2.tjiyu.com

heartbeat(一)heartbeat v2 haresource配置高可用集群

heartbeat(一)heartbeat v2 haresource配置高可用集群

2-3、建立各节点间的SSH互信通信

    高可用集群中一个(正常)节点需要对另外(故障)节点进行控制,如停止、启动等,这需要各节点间能使用管理员权限以基于SSH密钥认证通信。

具体配置如下:

1、生成RSA类型的SSH密钥,输出保存到~/.ssh/id_rsa,密码为空:

[root@node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

2、把生成的密钥复制到远程主机(node2)的.ssh/id_rsa.pub,后面指定主机用户和地址,然后执行会提示输入该用户对应的密码:

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pubroot@192.168.18.242

3、经过上面两步就可实现SSH免密码登录远程主机(node2)了,测试下:

[root@node1 ~]# ssh 192.168.18.242 'ifconfig'

4、两台主机具体配置过程如下图:

heartbeat(一)heartbeat v2 haresource配置高可用集群

2-4、各节点间的时间同步

       一些集群节点间的事务依赖比较严格的时间同步,如心跳是否超时。可以使用ntpd服务或ntpdate来实现同步网络时间服务器的时间,ntpd服务是渐变同步的,配置稍复杂,但效果好,实际最好用ntpd;ntpdate一次跳变同步,比较简单,这里先用ntpdate的方式来配置.

       先关了ntpd服务,然后再用ntpdate同步中国区NTP服务器上的时间(也可用自己建的NTP服务器);同时在node1上用crontab任务配置了每10分同步一次的计划,然后远程复制到node2,具体配置如下:

[root@node1 ~]# date

2016年 09月 25日 星期日 06:44:01 CST

[root@node1 ~]# service ntpd stop

关闭 ntpd: [确定]

[root@node1 ~]# chkconfig ntpd off

[root@node1 ~]# ntpdate cn.ntp.org.cn

25 Sep 12:43:11 ntpdate[5474]: step time server 182.92.12.11 offset 21511.691663 sec

[root@node1 ~]# date

2016年 09月 25日 星期日 12:43:21 CST

[root@node1 ~]# crontab -e

crontab: installing new crontab

[root@node1 ~]# crontab -l

*/10 * * * * /sbin/ntpdate cn.ntp.org.cn &> /dev/null

[root@node1 ~]# scp /var/spool/cron/root node2.tjiyu.com:/var/spool/cron/

heartbeat(一)heartbeat v2 haresource配置高可用集群

3、heartbeat v2下载安装

       可以到EPEL下载,网址:https://dl.fedoraproject.org/pub/epel/5/x86_64/,下载包括:Heartbeat(高可用核心)、heartbeat-devel(开发包,不安装)、heartbeat-gui(图形接口)、heartbeat-ldirectord(LVS后端服务健康检查、不安装)、heartbeat-pils(插件和库)、heartbeat-stonith(STONITH设备控制),还要一起下载一个叫libnet的依赖库。

      下载放到两台主机上,分别执行安装即可:# yum --nogpgcheck localinstall heartbeat-2.1.4-11.el5.x86_64.rpm heartbeat-gui-2.1.4-11.el5.x86_64.rpm heartbeat-pils-2.1.4-11.el5.x86_64.rpm heartbeat-stonith-2.1.4-11.el5.x86_64.rpm libnet-1.1.6-7.el5.x86_64.rpm。

4、heartbeat v2相关配置

heartbeat v2默认使用haresource为CRM,涉及到三个配置文件:

1、authkeys:密钥认证文件,600权限;

2、ha.cf:heartbeat服务的配置文件;

3、haresources:资源管理配置文件;

       Heartbeat配置文件目录在/etc/ha.d/,但发现初始没有在该目录下发现这三个文件,所以先到/usr/share/doc/heartbeat-2.1.4/目录把这三个样例文件保留权限地复制到/etc/ha.d/,如下所示:

[root@node1 ~]# cd /etc/ha.d/

[root@node1 ha.d]# cp -p /usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf,haresources} ./

heartbeat(一)heartbeat v2 haresource配置高可用集群

4-1、配置authkeys密钥认证文件

[root@node1 ha.d]# chmod 600 authkeys

[root@node1 ha.d]# vim authkeys

auth 3                    #认证加密方式,下面'3'

3 md5 56tfd43r7u7ij        #md5,加随机的盐

4-2、ha.cf:配置heartbeat服务

[root@node1 ha.d]# vim ha.cf

#logfile     /var/log/ha-log    #日志文件

logfacility     local0            #日志记录设备

keepalive     2                #多久发一次心跳(秒)

deadtime 15    #脑裂等不正常事件后,多久认为对方故障(秒)

warntime 10        #在日志中发出"late heartbeat"警告之前等待的时间

#initdead 120 #在某些配置下,重启后网络需要一些时间才能正常工作。这个单独的"deadtime"选项可以处理这种情况。它的取值至少应该为通常deadtime的两倍

udpport 694    #使用端口694进行bcast和ucast通信。这是默认的,并且在IANA官方注册的端口号。

bcast eth0 # 集群消息的传递方式,广播,Linux可用

#mcast eth0 225.0.0.1 694 1 0    #组播

#ucast eth0 192.168.1.2    #单播

auto_failback on        #一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为off,主节点便不能重新获得资源。

#stonith baytech /etc/ha.d/conf/stonith.baytech    #定义STONITH设备

node     node1.tjiyu.com     #定义集群所有节点,后面节点名称必须与"uname -n"一致

node node2.tjiyu.com     #定义集群所有节点

ping     192.168.18.101    #ping第三方设备(这里ping网关),上一篇说到的如何判断对方故障

4-3、haresources:配置资源管理

[root@node1 ha.d]# vim haresources

node1.tjiyu.com IPaddr::192.168.18.240/24/eth0 httpd

#每一行表示一个资源(组),这里表示node1.tjiyu.com节点为首先运行的主节点,然后通过~/ha.d/resource.d/目录下的资源代理IPaddr来配置VIP,使其配置在eth0的别名上,最后就是通过/etc/rc.d/init.d/目录下LSB资源代理脚本来管理httpd服务。

4-4、三个文件远程复制到node2

上面在node1上配置好了这三个文件,可以直接远程复制到node2上,内容、权限都一样:

[root@node1 ha.d]# scp -p authkeys haresources ha.cf node2:/etc/ha.d/

5、启动测试

1、在node1上先启动自己的heartbeat服务,再SSH远程启动node2的;

[root@node1 ha.d]# service heartbeat start

[root@node1 ha.d]# ssh node2 'service heartbeat start'

heartbeat(一)heartbeat v2 haresource配置高可用集群

2、查看启动日志,查看VIP配置在node1的eth0的别名上,再通过浏览器访问VIP,返回的是node1测试页面:

[root@node1 ha.d]# tail -f /var/log/messages

[root@node1 ha.d]# ifconfig

heartbeat(一)heartbeat v2 haresource配置高可用集群

3、在node1上运行使/usr/share/heartbeat/hb_standby脚本,使node1成为standy节点,node2成为主节点;查看VIP配置在node2的eth0的别名上,再通过浏览器访问VIP,返回的是node2测试页面:

heartbeat(一)heartbeat v2 haresource配置高可用集群

4、在node2上运行使/usr/share/heartbeat/hb_standby脚本,使node2成为standy节点,node1重新成为主节点;查看VIP配置在node1的eth0的别名上,再通过浏览器访问VIP,返回的是node1测试页面:

heartbeat(一)heartbeat v2 haresource配置高可用集群

 

      以上测试说明heartbeat提供了高可用功能。

 

      经过写这篇文章,对heartbeat v2 haresource配置高可用集群有了一个比较全面的认识,下面还将在本篇基础上进行NFS共享WEB文件的应用配置……

 

【参考资料】

1、Pacemaker:http://clusterlabs.org/wiki/Pacemaker

2、High-availability cluster:https://en.wikipedia.org/wiki/High-availability_cluster#Node_configurations|

3、高可用集群基本概念与heartbeat文本配置接口:http://www.178linux.com/10982

4、heartbeat配置文件ha.cf haresources authkeys详解:https://www.centos.bz/2012/03/heartbeat-ha-cf-haresources-authkeys/