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

來源:互聯網
上載者:User

一:目標

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



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.