Cororsync+Pacemaker

  Corosync是OpenAIS發展到Wilson版本後衍生出來的開放性集羣引擎工程。能夠說Corosync是OpenAIS工程的一部分,Corosync執行高可用應用程序的通訊組系統,它有如下特徵: 一個封閉的程序組通訊模式,這個模式提供一種虛擬的同步方式來保證可以複製服務器的狀態。java

        一個簡單可用性管理組件,這個管理組件能夠從新啓動應用程序的進程當它失敗後。node

        一個配置和內存數據的統計,內存數據可以被設置,回覆,接受通知的更改信息。mysql

        一個定額的系統,定額完成或者丟失時通知應用程序。web

        corosync是高可用集羣中的Cluster Messaging Layer(集羣信息層),是主要傳遞發集羣信息與心跳信息的,並無資源管理功能,資源管理還得依賴於上層的crm(Cluster resource Manager,集羣資源管理器),最著名的資源管理器,就是pacemaker,它是heartbeat v3分離出去的子項目。而如今corosync+pacemaker成了高可用集羣中的最佳組合。sql

         pacemaker是一個羣集資源管理器。它實現最大可用性羣集服務(亦稱資源管理)的節點和資源級故障檢測和恢復使用。 它能夠作乎任何規模的集羣,並配備了一個強大的依賴模型,使管理員可以準確地表達羣集資源之間的關係(包括順序和位置)。幾乎任何能夠編寫腳本,能夠管理做爲心臟起搏器集羣的一部分。 pacemaker是個資源管理器,不是提供心跳信息的,pacemaker是一個延續的CRM(亦稱Heartbeat V2資源管理器),最初是爲心跳,但已經成爲獨立的項目。apache

pacemaker 特色vim

1.主機和應用程序級別的故障檢測和恢復服務器

2.幾乎支持任何冗餘配置cors

3.同時支持多種集羣配置模式ssh

4.配置策略處理法定人數損失(多臺機器失敗時)

5.支持應用啓動/關機順序

6.支持在同一臺機器上運行的應用程序

7.支持多種模式的應用程序(如主/從)

8.能夠測試任何故障或羣集的羣集狀態

       配置pacemaker有兩種配置途徑,一時命令行工具包括crm和pcs,二是圖形工具:pugui,LCMC,pcsd和mgmt,其中LCMC是java編寫的圖形管理界面;Hawk是官方推薦代替mgmt的web界面配置工具,pcsd是pcs的圖形界面。

從pacemaker1.1.8開始crmsh就做爲一個獨立項目再也不提供須要另行下載。

crm有兩種工做方式:

1.批處理模式就是在命令行中直接輸入命令(如執行crm status)

2.交互式模式:運行crm,進入crm(live)# , 按2次Tab鍵可顯示該層級全部指令

crm中經常使用一級命令:

configure 用於設置具體參數

resource 對已定義資源進行各類操做

ra resource agents center, 可查看哪些resource agent可供使用

cib 相似於configure,只是操做的是cib shadow

node 對節點進行各種操做

status 顯示集羣狀態信息

cd 返回上一級

Ctrl+c 退出

configure中的指令

show 查看當前配置

verify 檢查當前配置是否正確, 至關於crm_verify -L

commit 提交配置使配置生效,修改後沒提交系統不會保存更改的信息

delete 刪除某項配置, name爲該項的名稱

edit 編輯某項配置,name爲該項的名稱

primitive 定義資源

monitor 資源檢視

group 建立組資源,將幾項資源編成一組

clone 克隆已建的資源

ms/master 定義master/slave資源

primitive中參數說明

資源代理類型: lsb, ocf, stonith, service

資源代理的提供程序: heartbeat , pacemaker

資源代理名稱:即resource agent, 如:IPaddr2,httpd, mysql

meta--元屬性, 是能夠爲資源添加的選項。它們告訴 CRM 如何處理特定資源。

params--實例屬性,是特定資源類的參數,用於肯定資源類的行爲方式及其控制的服務實例。

op--操做,默認狀況下,羣集不會確保您的資源一直正常。要指示羣集確保資源情況依然正常,須要向資源的定義中添加一個監視操做monitor。可爲全部類或資源代理添加monitor。

op_type :包括 start,stop,monitor

interval :執行操做的頻率。單位:秒。

timeout : 須要等待多久才聲明操做失敗。

requires :須要知足什麼條件才能發生此操做。容許的值:nothing、quorum 和 fencing。默認值取決因而否啓用屏障和資源的類是否爲 stonith。對於 STONITH 資源,默認值爲 nothing。

on-fail :此操做失敗時執行的操做。容許的值:

ignore:僞裝資源沒有失敗。

block:不對資源執行任何進一步操做。

stop:中止資源而且不在其餘位置啓動該資源。

restart:中止資源並重啓動。

fence:關閉資源失敗的節點 (STONITH)。

standby:將全部資源從資源失敗的節點上移走。

enabled 若是值爲 false,將操做視爲不存在。容許的值:true、false。

下面是pacemaker的配置

yum install pacemaker
cd /etc/corosync/
cp corosync.conf.example corosync.conf
vim corosync.conf
  bindnetaddr: 172.25.9.0  #設定網段
  mcastaddr: 226.94.1.1    #多波地址
  mcastport:5405          #多波端口
service{
    name:pacemaker   #添加pacemaker服務
    ver:0    #0爲啓動corsync時自動啓動pacemaker服務,1爲不接管服務
}

在其餘節點作相同配置

啓動corosync

/etc/init.d/corosync start
crm_verify -LV   #查看配置文件是否正確
crm_mon          #查看節點狀態

wKioL1dpVWGRoE1uAACgPqC3TVk503.png-wh_50

安裝crm命令來配置pacemaker

yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y
crm  #進入crm交互界面
  configure 
  show#查看當前配置

wKioL1dpVXLzah1IAACbYWjc1pU890.png-wh_50

忽略法定節點數:(集羣不會覺得節點不夠而失效)

property no-quorum-policy=ignore
commi  #將修改同步到其餘節點

添加fence(要安裝cman)

primitive vmfence stonith:fence_xvm params pcmk_host_map="server2.example.com:vm2;server3.example.com:vm3" op monitor interval=1min #server2/3.example.com是節點名,vm2/3爲虛擬機名稱
commi  #將修改同步到其餘節點

用show命令能夠看到fence的添加

wKioL1dpVZzB0rfHAADost0bzAU190.png-wh_50

添加vip

primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.9.100 cidr_netmask=32 op monitor interval=30s
commi  #將修改同步到其餘節點

用crm_mon命令能夠看到vip在server2主機上

wKioL1dpVdGBa7KpAACzWZC92-8627.png-wh_50

添加apache服務

primitive httpd ocf:heartbeat:apache params configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s 
commi  #將修改同步到其餘節點

用crm_mon命令能夠看到apache運行在server3主機上

wKiom1dpVgSRH83sAACk-FFo8Tw899.png-wh_50

注意爲了監控Apache的健康狀態,並在它掛掉的時候恢復Apache服務,server-status URL是可用的:

vim /etc/httpd/conf/httpd.conf
    <Location /server-status>
        SetHandler server-status    
        Order deny,allow
        Allow from 127.0.0.1
    </Location>

粘滯服務(使得服務與vip在同一主機上運行)

colocation httpd-with-ip inf: httpd vip #方法一
group apache vip httpd      #方法二
commi  #將修改同步到其餘節點

用crm_mon命令能夠看到vip和apache都運行在server2主機上

作完實驗咱們能夠用delete apache 和delete httpd刪除apache組和服務

用drdb同步存儲

primitive sqldata ocf:linbit:drbd params drbd_resource=westos op monitor interval=60s
ms sqldataclone sqldata meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

用crm_mon命令能夠看到drdb已加入集羣:

wKioL1dpVnDSqsS7AADXQ-dWOfI179.png-wh_50

掛載文件系統

primitive sqlfs ocf:heartbeat:Filesystem params device=/dev/drbd1 directory=/var/lib/mysql fstype=ext4
colocation sqlfs_on_drbd inf: sqlfs sqldataclone:Master 
order sqlfs-after-sqldata inf: sqldataclone:promote sqlfs:start

用crm_mon命令能夠看到文件系統已掛載

wKiom1dpVrbwACx_AAB7ZRVIW9Y774.png-wh_50

添加mysql服務

primitive mysql lsb:mysqld op monitor interval=60s
group mygroup vip sqlfs mysql #將vip,文件系統,mysql進行粘滯
相關文章
相關標籤/搜索