1. 程式人生 > >corosync+pacemaker配置高可用集群(需要額外安裝crm工具)

corosync+pacemaker配置高可用集群(需要額外安裝crm工具)

自用

借鑒了網上不少博客
定義:(來源於百度百科)
Corosync:是集群管理套件的一部分,它在傳遞信息的時候可以通過一個簡單的配置文件來定義信息傳遞的方式和協議等。
Pacemaker:是一個集群資源管理器。它利用集群基礎構件(OpenAIS 、heartbeat或corosync)提供的消息和成員管理能力來探測並從節點或資源級別的故障中恢復,以實現群集服務(亦稱資源)的最大可用性。
crm:直接的配置工具。

一、前期準備:準備兩臺主機node1和node2:

1.確保設置好IP地址,設置好hostname和修改/etc/sysconfig/network內hostname一致。同步時間:#ntpdate ntp.api.bz

2.node1和node2先做好互信。
node1:

  • #ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘‘
    #cd ~/.ssh/
    #ssh-copy-id -i id_rsa.pub root@NODE2IP

node2:

  • #ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘‘
    #cd ~/.ssh/
    #ssh-copy-id -i id_rsa.pub root@NODE1IP

測試一下:ssh NODE1IP ‘ifconfig‘
3.node1和node2:

  • #vim /etc/hosts
    加入:
  • #NODE1IP node1
    #NODE2IP node2

node2上測試:ping node1
4.關閉iptables和selinex
5.安裝第三方yum源頭:#yum install epel-release -y
6.安裝好測試用的httpd:#yum install httpd -y
7.node1:

  • echo node1 > /var/www/html/index.html

node2:

  • echo node2 > /var/www/html/index.html

停止httpd服務,並關閉開機自啟動。

二、開始安裝

node1node2均要安裝:
1.安裝corosync和pacemaker。
2.heartbeat到了V3,已經吧crm單獨劃分出去,所以不需要再安裝heartbeat。直接安裝crmsh安裝包。

###################################################################
vim /etc/yum.repos.d/HA.repo
##添加安裝crmsh用的yum源。但是下載速度很慢,很大概率失敗。
###################################################################
[network_ha-clustering_Stable]
name=Stable High Availability/Clustering packages (CentOS_CentOS-6)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6//repodata/repomd.xml.key
enabled=1
###################################################################
PS:如果不能安裝,那麽復制路徑直接到頁面上去下載缺少的安裝包。
例如:yum install crmsh-3.0.0-6.1.noarch.rpm crmsh-scripts-3.0.0-6.1.noarch.rpm python-parallax-1.0.1-28.1.noarch.rpm
###################################################################

三、開始配置

node1:(只需要在一個節點上配置即可)
1.配置corosync

  • #cd /etc/corosync
    #cp corosync.conf.example corosync.conf
    #vim corosync.conf

修改

  • secath:on #指的是集群間認證開啟,防止其他主機加入集群
    thrends:2 #並發開啟的線程數。一般單核cpu修改下。多核cpu不需要修改
    bindnetaddr:192.168.126.0 #集群工作的網段
    mcastaddr:226.99.9.17 #多播地址,可查一下什麽可選,盡量與別人的不一樣
    to-syslog:no #關閉寫入系統日誌
    添加啟動pacemaker
    service { ##啟動corosync完成後,就啟動pacemaker。
    ver:0
    name:pacemaker
    } #保存

2.準備密鑰文件

  • #corosync-keygen

3.復制corosync.conf和密鑰文件到node2:

  • #scp -p corosync.conf authkey node2:/etc/corosync/

四、啟動服務

node1:
1.啟動服務

  • #service corosync start

2.對服務進行檢查,查看是否有問題。
3.查看流程大致

  • 查看corosync引擎是否正常啟動
    查看初始化成員節點通知是否正常發出
    檢查啟動過程中是否有錯誤產生
    crm_mon查看狀態

例如:
查看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‘.

查看初始化成員節點通知是否正常發出:

  • #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 [172.16.100.11] 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.magedu.com

4.均無問題後在node1上遠程啟動node2

  • #ssh node2 ‘service corosync start‘

註意:啟動node2需要在node1上使用如上命令進行,不要在node2節點上直接啟動

五、配置集群

node1:(在一個節點上配置即可,會自動同步到node2)
1.crm有兩種模式命令行模式(立即生效)和交互式模式(提交生效)。
2.我們使用虛擬機沒有stonith設備,先關閉stonith。
#crm configure property stonith-enabled=false
3.開始配置webip資源

  • #crm

直接進入交互模式(verify檢查,commit提交,show顯示配置,edit直接手動修改配置文件)

  • #crm#resource
    #crm#resource#primitive webip ocf:heartbeat:IPaddr params ip=192.168.126.214 nic=192.168.126.254 nic=eth0 cidr_netmask=24
    #verify #檢查
    #commit #提交
    #show xml #以xml格式顯示配置條目
    #status #檢查狀態

(PS:啟動關閉資源的方法:#crm#resource#start webip
#crm#resource#stop webip)
4.配置httpd資源

  • #crm#configure#primitive httpd lsb:httpd

5.查看配置的資源

  • #crm#configure#show

6.檢查提交

  • #verify
    #commit
    (PS:有錯誤的時候可以鍵入edit直接進行文本界面來修改配置的資源)

node2:

  • #crm status或者#crm_mon來查看配置是否成功啟動。

node1:

  • 變成備節點:
    #crm node standby
    變回上線狀態:
    #crm node online

以上變更時,對node2上面的crm_mon進行觀察,會發現有變化。

六、配置資源的約束

1.排列約束:(使兩個資源在同一個節點運行)

  • #crm#configure#colocation httpd_with_webip INFINITY: httpd webip
    #crm#configure#show xml
    #crm#configure#verify
    #crm#configure#commit

2.順序約束:(決定資源啟動的先後次序。先啟動webip後啟動httpd)

  • #crm#configure#order webip_before_httpd mandatory: webip httpd
    #crm#configure#show xml
    #crm#configure#verify
    #crm#configure#commit

3.位置約束:(資源更傾向於某個節點)

  • #crm#configure#location webip_on_node1 webip 100: #uname eq node1

提交。

七、開始測試

客戶機瀏覽器登錄192.168.126.214
node1:

  • 變備件點
    #crm node standby
    刷新瀏覽器
    變回上線狀態
    #crm node online
    查看資源是否都回到node1

corosync+pacemaker配置高可用集群(需要額外安裝crm工具)