<練習>利用heartbeat實現雙節點mysql高可用集羣

一:目標

   創建具備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安裝挺麻煩的,其他還挺簡單的



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章