CentOS6.4 高可用集羣之基於heartbeat和nfs的高可用mysql
CentOS版本: CentOS release 6.4(Final) 2.6.32-358.el6.i686
效果演示:
使用ssh連接(nod-1.magedu.com)192.168.3.7 並執行以下命令:
[root@nod-1 ha.d]# hb_gui &
說明:hb_gui是heartbeat爲了方便管理集羣資源而提供的一個圖形用戶接口
安裝heartbeat默認會在系統中創建一個名爲"hacluster"的用戶、這個用戶是在執行hb_gui命令時
所必須的、默認情況下此用戶密碼爲空、需要手動爲其指定一個密碼。
一般情況下,一個高可用服務包括多個資源,從屬於同一個服務的多個資源必須運行在同一個節點上|
而默認情況下是平行的。這句話可以這樣來理解(如果此處我們不是創建了一個名MYSQL_HA的組,那麼
上圖中的3個資源就很可不是運行在同一個節點上)這一點一定要注意。
查看 集羣IP 即mysql_ip 是否位於(nod-1這個節點的eth0)的別名上(eth0:0)
在nfs.magedu.com上執行以下命令
模擬從遠程nfs.magedu.com(192.168.3.9)訪問 集羣IP (192.168.3.10)
在nod-1.magedu.com上執行以下命令
觀察nfs.magedu.com連接的到底是否是第1個節點:(nod-1.mageud.com)上的mysql數據庫。
在nod-1.magedu.com上查看nfs共享掛載的情況
模擬故障是否能成功轉移:
從上圖看當nod-1這個設定爲"備用節點"後、集羣資源已經轉移到nod-2這個節點上。那麼是否真的
成功了呢(驗證一下)
準備工作:
SSH 雙機互信
本次實驗中高可用集羣中只2個節點:(nod-1| nod-2)
nod-1.magedu.com (192.168.3.7)
nod-2.magedu.com (192.168.3.8)
nsf.magedu.com (192.168.3.9)
集羣的IP
mysqlip (192.168.3.10)
1、在第1個節點(nod-1.magedu.com)上執行以下命令:
cd ~/.ssh
ssh-keygen -t rsa
ssh-copy-id -i ./id_rsa.pub [email protected]
2、在第2個節點(nod-2.magedu.com)上執行以下命令:
cd ~/.ssh
ssh-keygen -t rsa
ssh-copy-id -i ./id_rsa.pub [email protected]
3、在第3個節點(nfs.magedu.com)上安裝配置rpcbind(nfs服務) 及ntp服務:
nfs.magedu.com這臺服務器同時提供(nfs|ntp)這2種服務。
rpcbind可以使用yum命令來安裝此處就不做多講了。
本次實驗中計劃將 nfs.magedu.com這臺服務器上的/mysqldata/data做爲共享
導出來供(nod-1|nod-2)掛載。
1.查看或編輯 nfs.magedu.com上的nfs共享
[root@nfs ~]# cat /etc/exports
/mysqldata/data 192.168.3.0/24(rw,no_root_squash)
2.在(nod-1|nod-2)執行掛載測試
可以執行以下命令測試能否正常掛載(nfs.magedu.com)上的共享目錄/mysqldata/data
[root@nod-1 /]# mount -t nfs 192.168.3.9:/mysqldata/data /mysqldata/data
[root@nod-2 /]# mount -t nfs 192.168.3.9:/mysqldata/data /mysqldata/data
在創建並配置高可用集羣的時候首先要做的便是要使用集羣內各節點的時間保持同步
在(nod-1|nod-2)上分別執行如下命令:
[root@nod-2 ~]# ntpdate 192.168.3.9
9 Dec 12:00:42 ntpdate[11266]: step time server 192.168.3.9 offset 57574.355435 sec
HeartBeat-2.1.4-11.el5.i386.rpm安裝及配置
下載鏈接:https://dl.fedoraproject.org/pub/epel/5/i386/
http://fedoraproject.org/wiki/EPEL(這個地址有時候訪問會很慢、使用***軟件會有明顯改善)
RPM包:
安裝順序
說明:
devle包、和 ldirectord 包在本實驗(高可用集羣)當中暫時用不着所以用不着安裝
所以無需安裝。
net-snmp-libs-5.3.2.2-22.el5_10.1.i386.rpm
在安裝之前必須把系統自帶net-snmp-libs包卸載掉(自帶版本爲net-snmp-libs-1:5.5-44.el6.i686)
執行命令: yum -e --nodeps net-snmp-libs
rpm -ivh net-snmp-libs-5.3.2.2-22.el5_10.1.i386.rpm
gnutls-1.4.1-10.el5_9.2.i386.rpm
在安裝之前必須把系統自帶gnutls包卸載掉(自帶版本爲gnutls-2.8.5-10.el6.i686)
執行命令: yum -e --nodeps gnutls
rpm -ivh gnutls-1.4.1-10.el5_9.2.i386.rpm
配置:
使用crm與haresource 不同之處是haresource(配置文件有3個:authkeys,har.cf,haresources)
[root@nod-1 ~]# cd /etc/ha.d/
[root@nod-1 ha.d]# ll
total 48
-rw-------. 1 root root 693 Dec 8 12:01 authkeys
-rw-r--r--. 1 root root 10686 Dec 8 12:09 ha.cf
-rwxr-xr-x. 1 root root 745 Mar 20 2010 harc
-rw-r--r--. 1 root root 5905 Mar 20 2010 haresources
drwxr-xr-x. 2 root root 4096 Dec 6 17:57 rc.d
-rw-r--r--. 1 root root 692 Mar 20 2010 README.config
drwxr-xr-x. 2 root root 4096 Dec 7 19:13 resource.d
-rw-r--r--. 1 root root 7862 Mar 20 2010 shellfuncs
authkeys: 是驗證身份的密鑰文件。只有通過驗證的主機才能成爲集羣當中的節點。
出於安全的authkeys的權限必須設定爲 600,否則執行service heartbeat start
時可能報錯、並伴隨有警告信息。
ha.cf 是關於集羣本身設定的配置文件(我們可以在此文件中設定有多少個節點、還可以
設定心跳信息發送模式[bcast|mcast|ucast]即[廣播|多播|單播],等各種參數)
haresources 高可用集羣中各資源的定義都位於此文件中
因爲我們此處要講的是crm所以只需要對authkeyst和ha.cf進行配置即可
1、authkeys
[root@nod-1 ha.d]# cat authkeys
# Authentication file. Must be mode 600
#
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
auth 1
1 md5 3c0d2f606e0ddd100509d42795436dc1
[root@nod-1 ha.d]#
爲了不佔據空間多餘的註釋行我都刪掉了、authkeys這個文件中需要修改的地方就2行:
auth 1
1 md5 3c0d2f606e0ddd100509d42795436dc
它表示啓用標識爲1的加密方式、在1這個標識中我們指定了加密的方式爲md5,後面一長串字符是salt。
2、ha.cf
在這個文件當中我們只需要修改4處地方
#mcast eth0 225.0.0.1 694 1 0
mcast eth0 225.0.0.1 694 1 0
#node kathy
node nod-1.magedu.com
node nod-2.magedu.com
#ping 10.10.10.254
ping 192.168.3.9
#compression_threshold 2
crm on
或者寫成下面這種方式效果也是一樣的(表示啓用crm)
crm respawn
CRM:即 Cluster Resource Manager
當authkeys和ha.cf這2個文件都配置完成後,可以執行以下命令:
[root@nod-1 ha.d]# /usr/lib/heartbeat/ha_propagate
把這2個配置好的文件分發至集羣中的其它各節點對應目錄下、不用我們手動去複製。
高可用
集羣的常用命令
關於集羣日常維護命令及其參數的使用、有一個網友寫的比較具體、此處就直接引用了。
出處:http://czmmiao.iteye.com/blog/1181720
crm_mon:crm_mon 命令允許您監視羣集的狀態和配置。其輸出包括節點數、uname、uuid、狀態
、羣集中配置的資源及其各自的當前狀態。crm_mon 的輸出可以顯示在控制檯上或打印到 HTML
文件。當具有不包含狀態部分的羣集配置文件時,crm_mon 會按文件中所指定的方式創建節點
和資源概覽。