一:目標
創建具備2臺節點的集羣
使用HeartBeat檢測集羣狀態,
當集羣種1臺節點出現故障時,在另一臺節點啓動mysqld服務
兩臺節點共用NFS數據庫
可以使用第3個節點提供nfs服務(這裏偷個懶,用其中一臺節點提供NFS服務)
二:準備
VirtualBox
兩臺具備centos 6.4 x_86.64位系統的虛擬節點
每臺節點具備2個ethernet網卡
heartbeat-2.1.4-12.el6.x86_64.rpm
heartbeat-pils-2.1.4-12.el6.x86_64.rpm
libnet-1.1.5-1.el6.x86_64.rpm(yum源裏沒有,需要另行下載)
三:安裝
節點1:
# mkdir build # cd build/ # rpm -ivh libnet--version.rpm(必須第一步) (有出錯信息的話,自己滿足依賴 # rpm -ivh heartbeat-pils(必須第二步) # rpm -ivh heartbeat*.rpm # yum install mysql-server # yum install nfs-utils
節點2:
跟節點1大體相同,不需要安裝nfs-utils
四:規劃
node1
eth0:172.16.100.1/24
eth1:1.1.1.1/24(vbox內網)
node2
eth0:172.16.100.2/24
eth1:1.1.1.2/24(vbox內網)
虛擬IP
VIP:172.16.100.80/24
mysql數據庫目錄
/share/data
NFS共享目錄
/mydata
五:原理
1.node1提供NFS服務,將自身/mydata目錄共享出去,
2.node1和node2均能自動掛載 node1:/mydata至/share目錄
3.Mysql數據庫目錄 datadir=/share/data
4.HeartBeat檢測節點狀態,node1掛掉後,立即將VIP轉移至node2,並啓動node2的mysqld服務
六:實施
1.NFS部分
node1
# vim /etc/exports #添加如下信息 /mydata 172.16.100.*/24(rw,sync,no_root_squash) no_root_squash參數很重要,避免nfs目錄掛載的權限問題 # service nfs start # exportfs -avr(若nfs有改變,可用此命令更新共享目錄,免去重啓nfs服務)
node2
#showmount -e 172.16.100.1 確認有如下輸出 Export list for 172.16.100.1 /mydata 172.16.100.*/24
掛載測試,然後卸載,確保nfs正常使用
2.Mysql部分
node1
# mkdir -pv /mydata/data # chown -R mysql.mysql /mydata # vim /etc/my.cnf添加datadir=/mydata/data參數 # service mysqld start(自行排錯) # mysql_secure_installation(初始化,設定root密碼,注意不要拒絕root遠程登錄,以後測試要用) # mysql -u root -p 數據庫初始化完成
node2
因node1已經完成了初始化,所以node2不需要做任何事,將node1的/mydata掛載到/share即可,
注意文件系統權限,然後直接啓動mysqld即可,測試完成後退出
3.HeartBeat部分
heartbeat是基於“節點名稱”來工作的,所以要給節點起名字,不建議使用DNS統一分配,因爲一旦DNS跪了,整個集羣都廢了,所以採用/etc/hosts文件的方式來命名
node1
# vim /etc/hosts 172.16.100.1 node1 172.16.100.2 node2
# hostname(查看當前主機名) # hostname node1(設置爲node1) node2(同樣操作)
將node1的/etc/hosts 複製給node2,
# scp /etc/hosts root@node2:/etc/hosts
發現每次scp都需要輸密碼,索性做密匙免登陸吧
# ssh-keygen -t rsa # ssh-copy-id node2 node2同樣操作
下面來設置HeartBeat
node1
# cd /usr/share/doc/heartbeat-2.1.4/ # cp authkey haresource ha.cf /etc/ha.d/ # openssl rand -hex 8 >> /etc/ha.d/authkey(生成16位md5值) # cd /etc/ha.d/ # vim authkey 添加如下數據 auth 3 3 md5 d6e92e4ecbbede21 # chmod 600 authkey(確保權限) #vim haresource 添加如下數據 node1 172.16.100.80/24/eth0/172.16.100.255 Filesystem::172.16.100.1:/mydata::/share::nfs mysqld #vim ha.cf bcast eth1 udpport 694 keepalive 2 logfile /var/log/ha-log auto_failback on node node1 node node2 (這裏定義cluster裏面有哪幾個節點)
設置好後 service heartbeat start
然後對 node2做同樣設置
4.測試
# mysql -u root -h '172.16.100.80' -p
默認node1是主節點,應該連到172.16.100.1上了
在node1上
# cd /usr/lib64/heartbeat/
# ./hb_standby
即可觀察到資源轉換
在node2上
# mount (查看nfs是否掛載)
# service mysqld status (查看mysql工作情況)
沒錯的話,說明集羣正常工作了
結語:
除了heartbeat安裝挺麻煩的,其他還挺簡單的