天天看點

corosync+openais+pacemaker實作高可用性群集

corosync+openais+pacemaker實作高可用性群集

實驗拓撲

corosync+openais+pacemaker實作高可用性群集

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實作高可用性群集
corosync+openais+pacemaker實作高可用性群集

配置好yum

corosync+openais+pacemaker實作高可用性群集

拷貝所需軟體包

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

corosync+openais+pacemaker實作高可用性群集
corosync+openais+pacemaker實作高可用性群集
corosync+openais+pacemaker實作高可用性群集

建立目錄 mkdir /var/log/cluster

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

[root@node1 corosync]# corosync-keygen

corosync+openais+pacemaker實作高可用性群集

排錯

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實作高可用性群集

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

可以禁用stonith ,不禁用就送出不上去

corosync+openais+pacemaker實作高可用性群集

定義資源

corosync+openais+pacemaker實作高可用性群集

送出上去

crm(live)configure# commit

corosync+openais+pacemaker實作高可用性群集

檢視一下我們的ip

corosync+openais+pacemaker實作高可用性群集

定義我們服務的資源

先安裝web伺服器

[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實作高可用性群集

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

corosync+openais+pacemaker實作高可用性群集

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

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" (已經關閉)

corosync+openais+pacemaker實作高可用性群集

停掉節點一

corosync+openais+pacemaker實作高可用性群集

檢視一下資源

corosync+openais+pacemaker實作高可用性群集

通路以下我們的節點

corosync+openais+pacemaker實作高可用性群集

再将我們的node1啟動起來

corosync+openais+pacemaker實作高可用性群集

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

corosync+openais+pacemaker實作高可用性群集

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

corosync+openais+pacemaker實作高可用性群集

切換過來了

corosync+openais+pacemaker實作高可用性群集

也變成了node1了

繼續閱讀