corosync+openais+pacemaker實現高可用性羣集

corosync+openais+pacemaker實現高可用性羣集

實驗拓撲


172228387.png

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

實現無障礙通訊


172229796.png

172230367.png

配置好yum

172231339.png

拷貝所需軟件包

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

172232902.png

172233961.png

創建目錄 mkdir /var/log/cluster

爲了便面其他主機加入該集羣,需要認證,生成一個authkey

[root@node1 corosync]# corosync-keygen

172234735.png

排錯

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.在任何一個節點上 查看集羣的成員狀態

172235694.png

可以看到有stonith錯誤,在高可用的環境裏面,會禁止實用任何支援

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

172235198.png

定義資源

172236733.png

提交上去

crm(live)configure# commit

172237911.png

查看一下我們的ip

172238304.png

定義我們服務的資源

先安裝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

172239257.png

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

172241491.png

停掉我們的票數,不然在節點一是小的時候,節點二不會變成主節點

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

查看一下資源

172243148.png

訪問以下我們的節點

172244499.png

再將我們的node1啓動起來

172245855.png

看一下資源到底會不會回滾了。其實在這種高可用的羣集上是不會回滾的。依然在node2上。

172247957.png

我們把node2停下來。看能不能切換到node1上呢

172248731.png

切換過來了

172248204.png

也變成了node1了

172249453.png



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章