一:目標
建立具備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/24vbox內網)
node2
eth0:172.16.100.2/24
eth1:1.1.1.2/24vbox內網)
虛擬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/hosts172.16.100.1 node1172.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 node2node2同樣操作
下面來設定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 33 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.cfbcast eth1udpport 694keepalive 2logfile /var/log/ha-logauto_failback onnode node1node 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安裝挺麻煩的,其他還挺簡單的