實驗環境:
虛擬機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 mysql { 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 mysql
啓動服務,在兩個節點上分別執行:
# /etc/init.d/drbd start
使用drbd-overview命令查看資源啓動結果
# drbd-overview
初始化完成後的兩個節點都處於Secondary狀態,需要將一個節點提升爲主節點,然後兩個主機的drbd資源會進行同步。
# drbdadm primary --force mysql
同步完成後,創建文件系統並掛載:
# mke2fs -t ext4 /dev/drbd0 # mount /dev/drbd0 /mnt
掛載之後,爲了測試drbd設備是否可以正常使用,先在該主節點複製文件到掛載目錄中:
# cp /etc/fstab /mnt
卸載設備,之後將該主節點的drbd狀態降級爲Secondary,,由另外一個節點掛載,然後再測試:
# umount /mnt # drbdadm secondary mysql # drbd-overview #查看一下降級的效果,如果兩個節點的狀態都爲secondary,另外一個節點纔可以提升爲master,
在另外一個節點操作:
# drbdadm primary mysql # drbd-overview # mkdir /mnt/drbd # mount /dev/drbd0 /mnt # ls /mnt #驗證之前複製操作的文件是否存在 。
四、在上述的驗證操作完成後,drbd的安裝及準備工作完成。進而配置集羣操作,這裏用的配置工具是crmsh,具體的配置操作如下:
crm(live)configure# property stonith-enabled=false #由於是兩個節點的高可用集羣,而配置集羣時會提供需要提供stonith設備,否則無法啓動集羣服務,所以需要設置stonith-enable這個參數爲false crm(live)configure# property no-quorum-policy=ignore #設置集羣在不具備法定票數的情況下的默認操作 crm(live)configure# 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服務之間也有排列約束,這兩個資源要運行在一起。