corosync+openais+pacemaker实现高可用性群集

实验拓扑


corosync+openais+pacemaker实现高可用性群集_第1张图片

Corosync简介:

Coreosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义上的新软件,在2002年的时候有一个项目Openais , 它由于过大,分裂为两个子项目,其中可以实现HA心跳信息传输的功能就是Corosync ,它的代码60%左右来源于Openais. Corosync可以提供一个完整的HA功能,但是要实现更多,更复杂的功能,那就需要使用Openais了。Corosync是未来的发展方向。在以后的新项目里,一般采用Corosync,而hb_gui可以提供很好的HA管理功能,可以实现图形化的管理。另外相关的图形化有RHCS的套件luci+ricci.

Openais:就是corostnc的前身。

Pacemaker是一个群集管理器。它利用首选群集基础设施提供的消息和成员能力,由辅助节点和系统进行故障检测和回收,实现性群集服务(亦称资源)的高可用性。

它可以做几乎任何规模的群集,并带有一个强大的依赖模式,让管理员能够准确地表达的群集资源之间的关系(包括顺序和位置)。

首先准备好环境,配置好两台主机的ip地址

Vip:192.168.2.100

Node1

Eth0:192.168.2.10

Node2

Eth0:182.168.2.20

实现无障碍通讯


corosync+openais+pacemaker实现高可用性群集_第2张图片

corosync+openais+pacemaker实现高可用性群集_第3张图片

配置好yum

corosync+openais+pacemaker实现高可用性群集_第4张图片

拷贝所需软件包

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 安装pacemaker依赖的

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.1.5-1.1.el5.i386.rpm 资源管理器

pacemaker-cts-1.1.5-1.1.el5.i386.rpm

pacemaker-libs-1.1.5-1.1.el5.i386.rpm

perl-TimeDate-1.16-5.el5.noarch.rpm

resource-agents-1.0.4-1.1.el5.i386.rpm

安装这些软件包

[root@node1 ~]# yum localinstall *.rpm --nogpgcheck

172231827.png

corosync+openais+pacemaker实现高可用性群集_第5张图片

corosync+openais+pacemaker实现高可用性群集_第6张图片

创建目录 mkdir /var/log/cluster

为了便面其他主机加入该集群,需要认证,生成一个authkey

[root@node1 corosync]# corosync-keygen

corosync+openais+pacemaker实现高可用性群集_第7张图片

排错

11.验证corosync引擎是否正常启动了

[root@node1 corosync]# grep -i -e "corosync cluster engine" -e "configuration file" /var/log/messages

ct 18 23:24:02 node1 smartd[2832]: Opened configuration file /etc/smartd.conf

Oct 18 23:24:02 node1 smartd[2832]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices

May 7 14:00:29 node1 smartd[2787]: Opened configuration file /etc/smartd.conf

May 7 14:00:29 node1 smartd[2787]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices

May 7 16:24:36 node1 corosync[686]: [MAIN ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.

May 7 16:24:36 node1 corosync[686]: [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'.

12。查看初始化成员节点通知是否发出

[root@node1 corosync]# grep -i totem /var/log/messages

May 7 16:24:36 node1 corosync[686]: [TOTEM ] Initializing transport (UDP/IP).

May 7 16:24:36 node1 corosync[686]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).

May 7 16:24:36 node1 corosync[686]: [TOTEM ] The network interface is down.

May 7 16:24:37 node1 corosync[686]: [TOTEM ] A processor joined or left the membership and a new membership was formed.

May 7 16:38:30 node1 corosync[754]: [TOTEM ] Initializing transport (UDP/IP).

May 7 16:38:30 node1 corosync[754]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).

May 7 16:38:30 node1 corosync[754]: [TOTEM ] The network interface [192.168.2.10] is now up.

May 7 16:38:31 node1 corosync[754]: [TOTEM ] Process pause detected for 603 ms, flushing membership messages.

May 7 16:38:31 node1 corosync[754]: [TOTEM ] A processor joined or left the membership and a new membership was formed.

13.检查过程中是否有错误产生

grep -i error: /var/log/messages |grep -v unpack_resources (便面stonith的错误)

14.检查pacemaker时候已经启动了

[root@node1 corosync]# grep -i pcmk_startup /var/log/messages

May 7 16:24:36 node1 corosync[686]: [pcmk ] info: pcmk_startup: CRM: Initialized

May 7 16:24:36 node1 corosync[686]: [pcmk ] Logging: Initialized pcmk_startup

May 7 16:24:36 node1 corosync[686]: [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295

May 7 16:24:36 node1 corosync[686]: [pcmk ] info: pcmk_startup: Service: 9

May 7 16:24:36 node1 corosync[686]: [pcmk ] info: pcmk_startup: Local hostname: node1.a.com

May 7 16:38:31 node1 corosync[754]: [pcmk ] info: pcmk_startup: CRM: Initialized

May 7 16:38:31 node1 corosync[754]: [pcmk ] Logging: Initialized pcmk_startup

May 7 16:38:31 node1 corosync[754]: [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295

May 7 16:38:31 node1 corosync[754]: [pcmk ] info: pcmk_startup: Service: 9

May 7 16:38:31 node1 corosync[754]: [pcmk ] info: pcmk_startup: Local hostname: node1.a.com

15 前集群的节点上启动另外一个节点

[root@node1 corosync]# ssh node2 '/etc/init.d/corosync start'

Starting Corosync Cluster Engine (corosync): [ OK ]

16,将前面的验证步骤在另外一个节点上再次验证一次

17.在任何一个节点上 查看集群的成员状态

corosync+openais+pacemaker实现高可用性群集_第8张图片

可以看到有stonith错误,在高可用的环境里面,会禁止实用任何支援

可以禁用stonith ,不禁用就提交不上去

172235198.png

定义资源

corosync+openais+pacemaker实现高可用性群集_第9张图片

提交上去

crm(live)configure# commit

corosync+openais+pacemaker实现高可用性群集_第10张图片

查看一下我们的ip

corosync+openais+pacemaker实现高可用性群集_第11张图片

定义我们服务的资源

先安装web服务器

Node1

[root@node2 ~]# yum install httpd

[root@node2 ~]# chkconfig httpd off

[root@node2 ~]# echo "node1" >/var/www/html/index.html

crm(live)configure# primitive webserver lsb:httpd

corosync+openais+pacemaker实现高可用性群集_第12张图片

Node2

[root@node2 ~]# yum install httpd

[root@node2 ~]# chkconfig httpd off

[root@node2 ~]# echo "node2" >/var/www/html/index.html

crm(live)configure# primitive webserver lsb:httpd

corosync+openais+pacemaker实现高可用性群集_第13张图片

停掉我们的票数,不然在节点一是小的时候,节点二不会变成主节点

4.关数闭 quorum

可选的参数有如下 ignore (忽略)

freeze (冻结,表示已经启用的资源继续实用,没有启用的资源不能

启用)

stop(默认)

suicide (所有的资源杀掉)

将节点1 的corosync 服务启动起来

改变quorum

crm(live)configure# property no-quorum-policy=ignore

cimmit

crm(live)# show (在次查看quorum 的属性)

ERROR: syntax: show

crm(live)# configure

crm(live)configure# show

node node1.a.com

node node2.a.com

primitive webIP ocf:heartbeat:IPaddr \

params ip="192.168.2.100"

primitive webserver lsb:httpd

group web webIP webserver

property $id="cib-bootstrap-options" \

dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \

cluster-infrastructure="openais" \

expected-quorum-votes="2" \

stonith-enabled="false" \

no-quorum-policy="ignore" (已经关闭)

172241638.png

停掉节点一

172242392.png

查看一下资源

corosync+openais+pacemaker实现高可用性群集_第14张图片

访问以下我们的节点

corosync+openais+pacemaker实现高可用性群集_第15张图片

再将我们的node1启动起来

172245855.png

看一下资源到底会不会回滚了。其实在这种高可用的群集上是不会回滚的。依然在node2上。

corosync+openais+pacemaker实现高可用性群集_第16张图片

我们把node2停下来。看能不能切换到node1上呢

172248731.png

切换过来了

corosync+openais+pacemaker实现高可用性群集_第17张图片

也变成了node1了

corosync+openais+pacemaker实现高可用性群集_第18张图片