標籤:mysql corosync pacemaker drbd
實驗環境:
虛擬機器2台安裝corosync+pacemaker,使用的作業系統為CentOS6.5。
虛擬機器IP:172.16.103.2、172.16.103.3
實驗步驟:
前提準備:兩台虛擬機器時間同步,能夠使用/etc/hosts檔案基於主機名稱進行通訊。
一、安裝corosync + pacemaker:
# yum install corosync# yum install pacemaker
二、安裝drbd軟體包:
drbd軟體包有兩部分組成:核心模組和使用者空間的管理工具,在核心版本號碼2.6.33之前的Linux系統中這兩部分都需要安裝,而之後的版本只需要安裝管理工具。實際安裝時,要注意程式包和對應的核心模組的版本要對應,實驗過程中使用的是8.4版本。
# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm
三、配置drbd
首先在兩台虛擬機器上建立兩個容量相同的磁碟分割,假設為1G,同為/dev/sda3
編輯設定檔,在其中使用protocol C協議等。然後定義資源,資源檔在/etc/drbd.d/目錄下,資源的定義如下:
resource web { on node1.cluster.com { device /dev/drbd0; disk /dev/sda3; address 172.16.103.2:7789; meta-disk internal; } on node2.cluster.com { device /dev/drbd0; disk /dev/sda3; address 172.16.103.3:7789; meta-disk internal; }}
在定義好設定檔和資源檔以後將這兩個檔案複製到另外一個節點上,這些檔案兩個節點上要保持一致。
# scp /etc/drbd.d/* node2:/etc/drbd.d
初始化資源,在node1和node2上分別執行:
# drbdadm create-md web
啟動服務,在兩個節點上分別執行:
# /etc/init.d/drbd start
使用drbd-overview命令查看資源啟動結果
# drbd-overview
初始化完成後的兩個節點都處於Secondary狀態,需要將一個節點提升為主節點,然後兩個主機的drbd資源會進行同步。
# drbdadm primary --force web
同步完成後,建立檔案系統並掛載:
# mke2fs -t ext4 /dev/drbd0# mount /dev/drbd0 /mnt
掛載之後,為了測試drbd裝置是否可以正常使用,先在該主節點複製檔案到掛載目錄中:
# cp /etc/fstab /mnt
卸載裝置,之後將該主節點的drbd狀態降級為Secondary,,由另外一個節點掛載,然後再測試:
# umount /mnt# drbdadm secondary web# drbd-overview #查看一下降級的效果,如果兩個節點的狀態都為secondary,另外一個節點才可以提升為master,
在另外一個節點操作:
# drbdadm primary web# drbd-overview# mkdir /mnt/drbd# mount /dev/drbd0 /mnt# ls /mnt #驗證之前複製操作的檔案是否存在 。
四、在上述的驗證操作完成後,drbd的安裝及準備工作完成。進而配置叢集操作,這裡用的組態工具是crmsh,具體的配置操作如下:
crm(live)# property stonith-enabled=false #由於是兩個節點的高可用叢集,而配置叢集時會提供需要提供stonith裝置,否則無法啟動叢集服務,所以需要設定stonith-enable這個參數為falsecrm(live)# property no-quorum-policy=ignore #設定叢集在不具備法定票數的情況下的預設操作crm(live)# primitive mydrbd ocf:linbit:drbd params drbd_resource=mydata op monitor role=Master interval=10s timeout=20s op monitor role=Slave interval=20s timeout=30s op start timeout=240s op stop timeout=100s #定義drbd裝置的主資源crm(live)# master ms_mydrbd mydrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=True #定義drbd主資源的複製資源,該複製資源有角色之分,只有主角色的複製資源啟動的高可用節點上,可以掛載drbd裝置,同時定義複製資源的數量以及在各節點上主、從複製資源可以啟動並執行個數crm(live)# primitive myfs ocf:heartbeat:Filesystem params device=/dev/drbd1 directory=/mydata fstype=ext4 op monitor interval=20s timeout=60s op start timeout=60s op stop timeout=60s #定義要使用的drbd資源要掛載的具體檔案系統資訊crm(live)# primitive myip ocf:heartbeat:IPaddr params ip=172.16.103.10 op monitor interval=30s timeout=20s #定義mysql高可用伺服器使用的VIP資訊,在兩個節點間流轉的IP地址crm(live)# primitive myserver lsb:mysqld op monitor interval=30s timeout=20s #定義mysql服務資源以及其使用的資源代理的方式crm(live)# group myservice myfs myip myserver #將mysql使用的ip,服務,檔案系統這些資源定義為一個組,以便啟動後這些資源會運行在一個節點上,而不是分散在不同節點。crm(live)# colocation myfs_with_ms_mydrbd_master inf: myfs ms_mydrbd:Master #mysql使用的檔案系統drbd0要與複製資源的主資源運行在一起,這是因為drbd的特性導致,只能是狀態為主的drbd才能掛載drbd裝置並執行讀寫操作crm(live)# order myfs_after_ms_mydrbd_master mandatory: ms_mydrbd:promote myfs:start #同時檔案系統資源與複製的drbd角色為主的資源的啟動順序有先後之分,只有某節點上的drbd角色為主之後,檔案系統才能被掛載,所以定義了順序約束crm(live)# colocation myserver_with_myfs inf: myserver myfs #檔案系統資源與mysql服務之間也有順序約束,這兩個資源要運行在一起。
corosync+pacemaker+drbd實現mysql高可用