您的位置:首页 > 运维架构 > 网站架构

教你如何配置安装Corosync/Opensia + Pacemaker的高可用集群

2011-09-15 22:42 471 查看
配置这个集群我们首先做一下使用的规划,使用的拓扑图如下:





本配置共有两个测试节点,分别node1.a.org和node2.a.org,相的IP地址分别为192.168.0.110和192.168.120;

集群服务为apache的httpd服务;

提供web服务的地址为192.168.0.11;

设置两个节点上的/etc/hosts文件均为下面的内容

192.168.0.110 node1.a.org node1

192.168.0.120 node2.a.org node2

为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点执行类似如下的命令:

我们用hostname更改他的主机名让他现在就生效

想查看一下node1

#hostname

#hostname node1.a.org

在查看一下node2

#hostname

#hostname node2.a.org

2)设定两个节点可以基于密钥进行ssh通信,这可以通过类似如下的命令实现:

在node1上

# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
在node2上

# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1

上面的准备工作完成了,下面我们来安装软件包。

libibverbs, librdmacm, lm_sensors, libtool-ltdl, openhpi-libs, openhpi, perl-TimeDate

3、安装corosync和pacemaker,首先下载所需要如下软件包至本地某专用目录(这里为/root/cluster):

cluster-glue cluster-glue-libs heartbeat openaislib resource-agents corosync heartbeat-libs pacemaker corosynclib 把上面的改为 bindnetaddr: 192.168.0.0

5)生成节点间通信时用到的认证密钥文件: libesmtp pacemaker-libs

# mkdir cluter 让上面的软件包下载到这个目录里面4、配置corosync,

# cd /etc/corosync
# cd cluster 切换进入到这个目录路面
# yum -y --nogpgcheck localinstall *.rpm 本地安装软件包
# cp corosync.conf.example corosync.conf
接着编辑corosync.conf,添加如下内容:

service {
ver: 0
name: pacemaker
}
aisexec {
user: root
group: root
}
# corosync-keygen 自动的给我们的corosync生成密钥
将corosync和authkey复制至node2:
# scp -p corosync authkey node2:/etc/corosync/ 把sorosync authkey 同步复制到node2上面 -p 是保持的原有的属性
分别为两个节点创建corosync生成的日志所在的目录:
# mkdir /var/log/cluster
# ssh node2 'mkdir /var/log/cluster' 在node2 上创建corosync的日志目录

6)尝试启动,(以下命令在node1上执行):
# /etc/init.d/corosync start

语法错误的检查


查看corosync引擎是否正常启动:
# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
Jun 14 19:02:08 node1 corosync[5103]: [MAIN ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Jun 14 19:02:08 node1 corosync[5103]: [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
Jun 14 19:02:08 node1 corosync[5103]: [MAIN ] Corosync Cluster Engine exiting with status 8 at main.c:1397.
Jun 14 19:03:49 node1 corosync[5120]: [MAIN ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Jun 14 19:03:49 node1 corosync[5120]: [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'.

查看初始化成员节点通知是否正常发出: totem 传递心跳的子系统
# grep TOTEM /var/log/messages
Jun 14 19:03:49 node1 corosync[5120]: [TOTEM ] Initializing transport (UDP/IP).
Jun 14 19:03:49 node1 corosync[5120]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Jun 14 19:03:50 node1 corosync[5120]: [TOTEM ] The network interface [192.168.0.5] is now up.
Jun 14 19:03:50 node1 corosync[5120]: [TOTEM ] A processor joined or left the membership and a new membership was formed.

检查启动过程中是否有错误产生:
# grep ERROR: /var/log/messages | grep -v unpack_resources
查看pacemaker是否正常启动:
# grep pcmk_startup /var/log/messages
Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: CRM: Initialized
Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] Logging: Initialized pcmk_startup
Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295
Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: Service: 9
Jun 14 19:03:50 node1 corosync[5120]: [pcmk ] info: pcmk_startup: Local hostname: node1.a.org

如果上面命令执行均没有问题,接着可以执行如下命令启动node2上的corosync
# ssh node2 -- /etc/init.d/corosync start
注意:启动node2需要在node1上使用如上命令进行,不要在node2节点上直接启动;
然后在node2上检测配置的信息是否有错误
使用如下命令查看集群节点的启动状态:
# crm status
============
Last updated: Tue Jun 14 19:07:06 2011
Stack: openais
Current DC: node1.a.org - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
0 Resources configured.
============
Online: [ node1.a.org node2.a.org ] 在线的节点
从上面的信息可以看出两个节点都已经正常启动,并且集群已经牌正常工作状态。
同步一下他们的时间# hwclock -s

6、配置集群的工作属性,禁用stonith
corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默认配置目前尚不可用,这可以通过如下命令验正:
# crm_verify -L 查看当前的集群是否有故障
crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
crm_verify[5202]: 2011/06/14_19:10:38 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
-V may provide more details

上面有检查有故障[/b] [/b]我们里可以通过如下命令先禁用stonith:
# crm configure property stonith-enabled=false
使用如下命令查看当前的配置信息:
# crm configure show
node node1.a.org
node node2.a.org
property $id="cib-bootstrap-options" \
dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false
从中可以看出stonith已经被禁用。
上面的crm,crm_verify命令是1.0后的版本的pacemaker提供的基于命令行的集群管理工具;可以在集群中的任何一个节点上执行。
7、为集群添加集群资源
corosync支持heartbeat,LSB和ocf等类型的资源代理,目前较为常用的类型为LSB和OCF两类,stonith类专为配置stonith设备而用;
可以通过如下命令查看当前集群系统所支持的类型:

而后我们到node2上通过如下命令停止node1上的corosync服务:
# ssh node1 -- /etc/init.d/corosync stop
查看集群工作状态:
# crm status
============
Last updated: Tue Jun 14 19:37:23 2011
Stack: openais
Current DC: node2.a.org - partition WITHOUT quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ node2.a.org ]
OFFLINE: [ node1.a.org ]

,我们可以通过如下的命令来修改忽略quorum不能满足的集群状态检查

# crm configure property no-quorum-policy=ignore

配置资源我们就可以使用这种方式来配置了
crm(live)#configure configure默认下配置
先指定资源的类型 在指定资源的名字 指定资源代理 并指定资源代理的相关参数操作
crm(live)configure# primitive webIP ocf:heartbeat:IPaddr params ip=192.16.0.110 定义ip地址
op 指定操作 monitor
crm(live)configure#show 查看一下你的配置
crm(live)confgure#ifconfig 查看我们定义的地址
定义第二个资源
先安装httpd
#yum install httpd
用 #crm ra list lsb
mete lsb:httpd
crm(live)ra#list ocf heartbeat 可以查看apache
crm(live)ra#list ocf heartbeat:apache 查看参数
在configure模式下
crm(live)confgure#primitive Webserver lsb:httpd

正常启动node1.a.org:
# ssh node1 -- /etc/init.d/corosync start

通过以下方式为资源指定默认黏性值:
# crm configure rsc_defaults resource-stickiness=100
接着使用下面的命令停止httpd服务,并确保其不会自动启动(在两个节点各执行一遍):
# /etc/init.d/httpd stop
# chkconfig httpd off

.............................................................
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息