基于corosync+pacemaker的高可用集群
Pacemaker即Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群。它不能提供底层心跳信息传递的功能,它要想与对方节点通信需要借助底层(新拆分的heartbeat或corosync)的心跳传递服务,将信息通告给对方。
pacemaker管理资源的工具由命令行界面的crmsh、pcs和图形化界面pygui、hawk等进行管理。
因此,一般来说都是选择corosync来进行心跳的检测,搭配pacemaker的资源管理系统来构建高可用的系统,下面就来介绍下corosync+pacemaker构建高可用系统。
配置共有两个测试节点,分别server2和server3,相的IP地址分别为172.25.80.2和172.25.80.3;
模拟实现的集群服务是web服务;
提供web服务的地址为172.25.80.1
1,基础环境设置:
首先配置一台HA主机需要做的准备工作:
1)固定IP地址
2)所有节点的主机名称和对应的IP地址解析服务可以正常工作,只需要保证两个节点上的/etc/hosts文件均为下面的内容:
172.25.80.2 server2 node1
172.25.80.3 server3 node2
以上三步配置完成后能实现相互解析主机名,如下:
3)配置节点信任关系:
节点1:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
节点2:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
2,安装环境需要的相应的软件包:
#yum install -y libibverbs librdmacm lm_sensors libtool-ltdl openhpi-libs openhpiperl-TimeDate
3,安装corosync和pacemaker,我们这里将软件包放在/root/corosync目录下(两个节点都要做):
cluster-glue-1.0.6-1.6.el5.i386.rpm
cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
corosync-1.2.7-1.1.el5.i386.rpm
corosynclib-1.2.7-1.1.el5.i386.rpm
heartbeat-3.0.3-2.3.el5.i386.rpm
heartbeat-libs-3.0.3-2.3.el5.i386.rpm
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm
openaislib-1.1.3-1.6.el5.i386.rpm
pacemaker-1.0.11-1.2.el5.i386.rpm
pacemaker-libs-1.0.11-1.2.el5.i386.rpm
perl-TimeDate-1.16-5.el5.noarch.rpm
resource-agents-1.0.4-1.1.el5.i386.rpm
开始安装:
# cd /root/corosync/
# yum -y --nogpgcheck localinstall *.rpm
这里我们使用本地yum安装,并忽略包的检查。
4,corosync的相关配置(在节点1上执行):
# cd /etc/corosync
# cp corosync.conf.example corosync.conf
这里corosync.conf.example是配置样本,我们只需拷贝一份,并进行修改即可:
vim /etc/corosync/corosync.conf
compatibility: whitetank
totem {
version: 2
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 172.25.0.0
mcastport: 5405
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
to_syslog: yes
logfile:/var/log/cluster/corosync.log //此处日志存放的地方
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
service {
ver: 0
name: pacemaker
}
aisexec {
user: root
group: root
}
生成节点间通信时用到的认证密钥文件:
# corosync-keygen //此处会在当前目录下生成一个认证密钥文件
然后拷贝相关的文件到节点2上:
# scp -p corosync.conf authkey node2:/etc/corosync/
为两个节点创建corosync生成的日志所在的目录:
# mkdir /var/log/cluster
# ssh node2 -- mkdir /var/log/cluster
5,开始启动corosync(在节点1上执行):
# /etc/init.d/corosync start
Starting Corosync Cluster Engine(corosync): [ OK ] //出现此,说明corosync已经启动
启动节点2:
# ssh node2 -- /etc/init.d/corosync start //此步您需要在节点1上进行
Starting Corosync Cluster Engine (corosync): [ OK ] //出现此,说明您的节点2corosync已经启动,节点2上继续验证是否出现异常错误
Online: [ server2 server3 ] //此处说明您的两个集群节点均已运行正常。
6,配置集群的工作属性:
因为corosync默认已经启用了stonith,而当前又没有添加stonith设备,会出现默认配置不可用的状态,为防止以后出现错误,影响操作,我们这里可以禁用stonith:
# crm configure property stonith-enabled=false //这样执行的命令会提交而且会立即生效
INFO: building help index
crm,crm_verify相关的命令是1.0后的版本的pacemaker提供的基于命令行的集群管理工具;可以在集群中的任何一个节点上执行,查看相应的信息。
7,为集群添加集群资源:
corosync支持heartbeat,lsb和ocf等类型的资源代理,目前较为常用的类型为lsb和lsb两类,stonith类专为配置stonith设备而用。
8,配置相试网页:
#echo "<h1>Server2</h1>" > /var/www/html/index.html
#chkconfig httpd off
#service httpd stop
#ssh node2 -- ‘echo "<h1>Server3</h1>" > /var/www/html/index.html‘
#ssh node2 -- ‘chkconfig httpd off‘
#ssh node2 -- ‘service httpd stop‘
添加web资源:
首先创建的web集群创建一个IP地址资源,
# crm configure primitive WebIPocf:heartbeat:IPaddr paramsip=172.25.80.1
然后将httpd服务添加为集群资源。将httpd添加为集群资源有两处资源代理可用:lsb和ocf:heartbeat,为了简单起见,这里使用lsb类型:
#crm configure primitive WebSite lsb:httpd
可以通过主机的浏览器输入http://172.25.80.1进行访问web服务:
9,在节点2上使节点1离线:
# ssh node1 -- /etc/init.d/corosync stop
# crm status
============
Stack: openais
Current DC: server3 - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ server3 ]
OFFLINE: [ server2 ]
此时节点1已经离线,而节点2却无法获得相应的资源,当然也无法访问相应的服务,,此时的集群状态是“WITHOUT quorum”,没有了quorum,就无法使节点获得相应的资源,集群服务无法正常运行。可以采取设置quorum,来忽略quorum。如下设置:
# crm configure property no-quorum-policy=ignore
# crm status
============
Stack: openais
Current DC: server3 - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ seerver3 ]
OFFLINE: [ server2 ]
Resource Group: Web
WebIP (ocf::heartbeat:IPaddr):Started server3
WebSite (lsb:httpd): Started server3//此时节点2已经获得资源
本文出自 “12444971” 博客,请务必保留此出处http://12454971.blog.51cto.com/12444971/1930094
原文地址:http://12454971.blog.51cto.com/12444971/1930094