【HA】開源版HeartBeat + DRBD(分佈式存儲)+MySql

高可用版本下載網站: linux-ha.org
  respan ~ [判斷ping的短網切換]
  drbd 分佈式複製塊設備


                ***********************************************
               ***********HA(高可用集羣)[開源版]***************
                ***********************************************
一.安裝相應的軟件及其簡介
      目前版本(RH6.5),安裝 heartbeat-3.0.4-2.el6.x86_64.rpm,
              heartbeat-devel-3.0.4-2.el6.x86_64.rpm,
               heartbeat-libs-3.0.4-2.el6.x86_64.rpm,
               ldirectord-3.9.5-3.1.x86_64.rpm

    主要文件(顯示路徑):/etc/ha.d/README.config  [可用 rpm -q heartbeat-d 查看下面所示文件絕對路徑]
        They are:
        ha.cf       Main configuration file
        haresources Resource configuration file
        authkeys    Authentication information

二.依次更改/usr/share/doc/heartbeat-3.0.4/~  下的上述文件,而且完成後cp到/etc/ha.d/ 下
  (1)vim /usr/share/doc/heartbeat-3.0.4/ha.cf         [基本類]
      [行標]
        48 keepalive 2                     [心跳互傳等待時間:2S]
        56 deadtime 30                     [死亡確認時間:30S]
        61 warntime 10                     [警告時間:10]
        71 initdead 60                     [資源初始化:60]【一個節點機死亡,另外一個節點機接管資源並開啓的時間】
    76 udpport 1060                     [設定節點:1060]【每一個節點機這個必須不一樣】
        91 bcast eth0                      [單波傳播方式,設備eth0]
        211 node   server1.example.com            [寫入所用節點機的主機名,必須是主機名,並且誰先誰主,其次爲輔]
       212 node   server2.example.com              
       220 ping 172.25.254.250                 [ping,檢測主機是否網通,若不一樣則啓動策略轉移]
       253 respawn hacluster/usr/lib64/heartbeat/ipfail    [所使用64版本]
       259 apiauth ipfail gid=haclientuid=hacluster        [開啓hacluster用戶]

   (2)vim/usr/share/doc/heartbeat-3.0.4/haresources        [策略加載類]
    150 server1.example.comIPaddr::172.25.254.168/24/eth0 httpd
    [主機名,加載IPaddr 文件,VIP(虛擬IP設置),服務(httpd)]【IPaddr可執行文件在/etc/ha.d/resource.d/】

  (3)/usr/share/doc/heartbeat-3.0.4/authkeys           [認證類]
    1.首先 chmod 600authkets,所小權限
        2.其次vim
      [行標]
          23 auth1                      [開啓明文認證]
        24 crc    
  (4)測試,開啓heartbeat(兩個都開啓) 服務,看httpd服務是否能正確運行(在虛擬機上可能比較慢,須要等待),curl 172.25.254.168 的顯示內容;而且關閉heartbeat 服務,看其是否能自動切換節點。

三.添加 drbd(分佈式複製塊設備存儲)
  (1)所用軟件下載
        drbd-8.4.2.tar.gz(tar -zxf 解壓);
                yum install -y gcc
  (2)執行./configure --enable-spec 和 ./configure --enbale-spec--with-km,
      (a)按照提示(所需) 依次下載軟件(flex,rpm-build,等)
       生成drbd.spec,drbd-km.spec,drbd-kernel.spec 等文件,用來製做rpm包
  (3)rpmbuild -bb drbd.spec 和 rpmbuild -bbdrbd-km.spec    按照提示將壓縮包放到相應位置,在進行rpmbuild操做。
         cp drbd-8.4.2.tar.gz ~/rpmbuild/SOURCES/
       執行完上述操做以後會在 ~/rpmbuild/RPMS/x86_64 下生成8個drbd-*包,安裝(rpm -ivh *)它們,且發送給其它節點機並安裝。
  (4)**在/etc/brdb.d/ 中編輯自定義文件,此文件很是重要,即drbd服務所加載的服務機及其向關信息。
       (a)在配置文件以前,向每一個虛擬機添加兩塊4G的虛擬網卡
       (b) vim/etc/brdb.d/example.res
         resource example {
         meta-disk internal;
     device /dev/drbd1;
     syncer {
         verify-alg sha1;
         }
         on server1.example.com {
     disk /dev/vdb;
     address 172.25.254.161:7789;
     }
     on server2.example.com {
     disk /dev/vdb;
     address 172.25.254.162:7789;
     }
      (c)scp example.com -->172.25.254.162
      (d)每個節點機都要進行drbd服務添加,drbdadm create-md example,而且開啓drbd服務
      (e)設置主/備機,而且進行強行同步存儲內容
     drbdadm primary/secondary example --force  [那個機子操做此命令那個爲主/輔,而且強行同步信息]
         watch cat /proc/drbd               [能夠查看同步內容的進程]
      (f)同步好了以後製做文件系統而且掛載(mkxfs.ext4),這樣/dev/drbd 設備的內容就能夠同步了。
          在掛載設備時,首先要設置當前機爲主,再進行mount 操做
      drbdadm primary/secondary example 
   
四.添加 mysql數據庫(存儲),並完成節點服務異常時,自動轉移服務到另外一個節點。

  (1)完善掛載mysql點
       a.在主節點中下載mysql-server
         首先開啓mysql   /etc/init.d/mysqld start
         掛載mnt,而且刪除/mnt 下的全部內容
         關閉mysql(防止產生.sock文件 防止正常開啓),而且將/var/lib/mysql/ 中的內同考到/mnt 下
     掛載 mount /dev/drbd1/var/lib/mysql/,進入/var/lib/mysql,將其主組都該爲 mysql(chown mysql.mysql ~ -R)
       b.此時,切換主輔 掛載 /dev/drbd1/ 到 /var/lib/mysql 開啓mysqld,就能夠達成mysql 數據庫數據共享了。
  (2)設置服務自動掛載,而且基於heartbeat 的服務轉移的策略
       配置/etc/ha.d/haresources
     [行標]
      150 server1.example.comIPaddr::172.25.254.168/24/eth0 drbddisk::exampleFilesystem::/dev/drbd1::/var/lib/mysql::ext4
          mysqld
         【主機名,VIP,加載drbd example文件,掛載文件系統/dev/drbd1 到 /var/lib/mysql ext4本地文件系統,mysql服務】
  (3)測試
    前提,關閉兩臺主機的mysql服務,將兩個主機的都設爲輔助機(cat /proc/drbd),關閉兩個主機的heartbeat 服務。 
   
        a.開啓兩臺節點機的heatbeat 服務,節點1能夠進入mysql服務,而且節點1爲主機。
    b.主機1關閉heartbeat 服務,節點2接管mysql服務,而且節點2改變爲主機。
        c.開啓節點1,服務回到節點1上,而且節點1轉爲主機,節點2轉爲輔機
        d.關閉節點機1,節點機2接管服務,開啓後,服務回到主機1。反之亦然
        e.當服務在節點機1上運行時,使得節點機1網卡down,節點1 mysql 能登入,在 cat /proc/drbd 信息中會顯示對方爲DUnknown
          這時,節點2上的heartbeat會將服務在節點2上啓動,可是會由於接受不到主節點機的drbd 和 mysql 信息 其動不了drbd mysql服務,
          cat /proc/drbd 中會顯示對方爲 DUnknown
          [由於,節點機1網絡故障。節點機2 找不到節點機1 節點機2的 heartbeat 就會啓動節點2,若你從新啓動節點2上的 heatbeat ,
      那麼節點機2會一至卡住不動,請求主節點的drbd 和 mysql 策略資源,直到主節點修復好網絡,可是因爲迴轉模式,當主機網絡修復好時,策略資源
      會從新回到主節點機上(節點機1)]
  (4)小拓展,當網絡出現問題cat /proc/drbd 時,若兩臺機子都 Unkown 對方 除了從新制做新的drbd 並同步 這種毀滅性的方法,其時還能夠恢復並同步數據。
    在輔機 執行drbdadm disconnect example  [使輔機不鏈接 example]
              drbdadm ----discard-my-data connect example  [丟掉爲的drbd數據,鏈接 example]
    稍等片刻  cat /proc/drbd    正確信息就會出如今本機 和 主節點機上
 




       
 
node

相關文章
相關標籤/搜索