Corosync與Pacemaker實現nfs作爲共享存儲的MySQL高可用

1. 安裝corosync和pacemaker

yum -y install corosync pacemaker 

2. 配置pacemaker做爲corosync的插件運行:

vim /etc/corosync/corosync.conf

     service {
          name: pacemaker #指定資源管理器的名稱
          ver: 0 # 0:表示pacemaker作爲corosync的插件來運行;1:表示pacemaker作爲單一的            守護進程來運行,也就是說在啓動corosync後還必須手動啓動pacemaker守護進程。
          }
      aisexec {
          user: root  #表示以哪個用戶來運行pacemaker資源管理器。
          group: root #表示以哪個組來運行pacemaker資源管理器。
      }
3. 配置節點間通信使用的密鑰:
corosync-keygen
4. 配置集羣屬性
crm(live)configure# property no-quorum-policy=ignore

【pcs property set no-quorum-policy=ignore】

#表示不管出現何種情況資源照樣繼續運行
crm(live)configure# property stonith-enabled=false

【pcs property set stonith-enabled=false】

#表示禁用stonith,默認情況下,若是沒有stonith設備,集羣是無法啓動的。
5. 配置資源以及對資源的監控
  1、配置虛擬ip
crm(live)configure# primitive myip ocf:heartbeat:IPaddr params ip="10.10.0.221" nic="eth0:0" cidr_netmask="12"  op monitor interval=10s timeout=30s

  【pcs resource create myip ocf:heartbeat:IPaddr params ip="10.10.0.221" nic="eth0:0" cidr_netmask="12"  op monitor interval=10s timeout=30s】
#表示定義一個主資源 myip, ocf:heartbeat:IPaddr表示資源代理的類型爲ocf,提供者是heartbeat,具體的代理爲IPaddr,params表示代理IPaddr的參數爲ip="10.10.0.221" nic="eth0:0" cidr_netmask="12"等,op表示對此資源的操作,有monitor、start、stop、status等。interval表示每隔10s對資源的健康狀態進行一次檢查,如果檢測不成功,30s後就超時了。

2、配置mysqld服務
crm(live)configure# primitive myservice ocf:heartbeat:mysql params binary="/usr/bin/mysqld_safe" config="/etc/my.cf" datadir="/var/lib/mysql" pid="/var/run/mysqld/mysql.pid" socket="/tmp/mysql.sock" additional_parameters="--bind-address=10.10.0.221" op start timeout=120s op stop timeout=120s op monitor interval=20s timeout=30s

  【pcs resource create myservice ocf:heartbeat:mysql params binary="/usr/bin/mysqld_safe" config="/etc/my.cf" datadir="/var/lib/mysql" pid="/var/run/mysqld/mysql.pid" socket="/tmp/mysql.sock" additional_parameters="--bind-address=10.10.0.221" op start timeout=120s op stop timeout=120s op monitor interval=20s timeout=30s】
3、配置共享存儲
crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device=10.10.0.13:/mysqldata directory=/var/lib/mysql fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s

【pcs resource create mystore ocf:heartbeat:Filesystem params device=10.10.0.13:/mysqldata directory=/var/lib/mysql fstype=nfs op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s】

6. 配置約束規則
1、配置排列約束
crm(live)configure# colocation myip_with_mystore_myservice inf: myip mystore myservice

【pcs constraint colocation add myip mystore myservice INFINITY】
#表示 myip、mystore、myservice三個資源必須在一起,或者定義一個組資源,將這三個資源放入組中即可。
2、配置順序約束
crm(live)configure# myip_then_mystore_then_myservice inf: myip mystore myservice

【pcs constraint order myip then mystore then myservice 】
#表示起源啓動的順序依此是myip、mystore、myservice
7. 配置網絡ping node監控
1、配置ping node主資源
crm(live)configure# primitive pnode ocf:pacemaker:ping params host_list=10.10.0.1 multiplier=100 op monitor interval=10s timeout=60s op start_timeout=60s

【pcs resource create pnode ocf:pacemaker:ping params host_list=10.10.0.1 multiplier=100 op monitor interval=10s timeout=60s op start timeout=60s 】
#host_list是網關地址或可以ping通的其他節點,可以有多個,使用空格分隔。而multiplier表示如果集羣中的節點可以ping通,那麼那個節點的分數就會乘以這個參數指定的值,來進行累加,比如nodeA,ping通一次就是1*100,ping通兩次2*100,一次類推。
2、配置pnode的克隆資源

crm(live)configure# clone cl_pnode pnode

【pcs resource clone pnode 】

3、配置ping node 失敗的時候,資源的故障轉移
crm(live)configure# location mystore_on_ping mystore rule -inf: not_defined pingd or pingd number:lte 0

【pcs constraint location mystore rule score=-INFINITY: not_defined pingd】
【pcs constraint location mystore rule sorce=-INFINITY: pingd lte 0 type=number】
#表示如果由ping node得出的分數小於等於0 或者某個節點沒有定義域ping node 相關的屬性的話,那麼就進行資源的轉移。
8. 檢查以上的配置是否有語法錯誤,然後提交保存
  1、校驗是否有語法錯誤
  crm(live)configure# verify
  2、提交保存
  crm(live)configure# commit
9. 測試
  1、使用crm node standby nodeX 
      #nodeX表示你要將哪個節點掛起
  2、使用禁止ping信息來測試
      iptables -A OUTPUT -p icmp -j DROP


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