兩臺linux完美實現雙機熱備

一直想做基於linux的雙機熱備,一直沒有時間和機會。一直以爲只要做雙機熱備的實驗就必須兩臺機器外接一個存儲。甚至一個月以前在學習keepalived的時候還在琢磨keepalvied去掉哪些條件可以實現雙機熱備。直到一個月以前設計存儲方案的時候部門老大給了一個國外的鏈接介紹drbd+nfs實現nfs的熱備方案的時候,我的眼前一亮,這不就是我一直想做的不依靠存儲實現熱備的解決方案嗎?

      先來糾正一下自己的錯誤認識吧,沒接觸keepalived和heartbeat的時候,道聽途說的認爲keepalived出現以後就沒有必要再用heartbeat了。在仔細學習了這兩個傳奇人物以後發現:keepavled是專門爲高可用的集羣而誕生的,而heartbeat生是雙機熱備的人死是雙機熱備的死人。
      好了,說說本文實現的原理吧。大體來說就是heartbeat+drbd。heartbeat自是不用說,用它來實現資源的統一調度;而drbd就是本文的重頭戲。這一個什麼東東呢?官方的東東咱就不說了。用咱們自己的話說,就是實現兩臺機器的兩塊硬盤的實時完整複製(drbd即磁盤鏡像)。它的出現,解決了兩臺機器做雙機時的數據一致性問題。
      ok,廢話半天,說一下本文的實現環境:
      os:ubuntu9.04
      ip1:192.168.1.11 drbd1
      ip2:192.168.1.12 drbd2
      disk:/dev/sdb1(一個8G的分區)
      通過drbd,掛在每臺機器上的sdb1這塊分區將成爲咱們“存儲”。let's go !
++++++現在開始兩臺機器配置一樣++++++
      1.設定hosts
      vi /etc/hosts
      192.168.1.11 drbd1
      192.168.1.12 drbd2
      注意:比如在1.11這臺機器上。drbd1是你執行hostname命令看到的,而不是隨手一寫的喲:)
      2.安裝並配置drbd
      1).安裝drbd。
      你可以去http://oss.linbit.com/drbd/下載最新的版本。本文爲了方便直接從ubuntu的源進行安裝
      apt-get install drbd8-utils
      2).創建配置文件
      如果用apt-get或者yum的方式安裝的話,會默認創建配置文件,而編譯安裝則不會。不管直接清空或改名,寫入以下內容。
      vi /etc/drbd.conf
      common {
          syncer { rate 10M; }           #速率
      }
      resource r0 {
          protocol C;
          disk { on-io-error detach; }
          on drbd1 {                     #drbd1爲第一臺機器的機器名
              device /dev/drbd0;         #創建的虛擬資源
              disk /dev/sdb1;            #實際的物理分區,一定要注意,是一個單獨的分區,而且是未經格式化的
              address 192.168.1.11:7788; #第一臺機器的ip地址,及通訊端口
              meta-disk internal;        #類型,局域網
          }   
          on drbd2 {
              device /dev/drbd0;
              disk /dev/sdb1;
              address 192.168.1.12:7788;
              meta-disk internal;
          }   
      }
      3)創建資源
      drbdadm create-md r0 #r0爲剛纔配置文件裏的資源名
      會提示三個疑問,如果你英文還可以的話,可以閱讀一下,不然的話,直接回車。在終點你會看到
      success
      :)
      4)啓動drbd服務
      /etc/init.d/drbd start
      cat /proc/drbd
      你應該可以看到
      注意裏面我標註的"Secondary/Secondary"意思是說現在這塊盤是從盤,主盤不知道。

      ++++++現在開始只在drbd1上操作++++++
      5)初始化網絡硬盤
      drbdsetup /dev/drbd0 primary -o
      cat /proc/drbd
      
      你會發現現在已經是"Primary/Secondary"了,而且已經開始同步硬盤狀態。
      爲了實時的查看同步情況,你可以在drbd1上執行
      watch -n1 cat /proc/drbd
      同步還在進行
      經過一段時間的等待,你會發現成功完成!
      同步完成以後,在drbd2上查看硬盤狀態
      注意磁盤狀態是:"Secondary/Primary"
      格式化網絡磁盤
      6)設置drbd開機啓動
      在兩臺機器上都執行
      chkconfig drbd on
      7)手工測試drbd是不是正常工作
      在drbd1上建立3個文件
      在drbd2上驗證結果
      ok,我們現在已經確定drbd是正常工作的了。也相信在這麼細緻的介紹下,你已經熟悉了它是怎麼工作了。我們現在有了“網絡存儲”了。下一步就是讓一個東東幫我們調度資源了。簡單的幾步配置有請heartbeat出場
      3.配置heartbeat
      1)安裝heartbeat
      apt-get install heartbeat
      2)配置heartbeat
      vi /etc/heartbeat/ha.cf
      logfacility     local0
      keepalive 2
      deadtime 10
      auto_failback off
      bcast   eth0
      node drbd1 drbd2

      vi /etc/heartbeat/haresources
      drbd1 drbddisk::r0 Filesystem::/dev/drbd0::/mnt::ext3

      vi authkeys
      auth 3
      3 md5 abc

      chmod 600 authkeys 
      3)相同的配置複製到drbd2
      scp authkeys haresources ha.cf [email protected]:/etc/heartbeat/
      4)確保服務都是正常運行的
      /etc/init.d/drbd start
      /etc/init.d/heartbeat start

      5)切換測試
      通過cat /proc/drbd查看drbd的狀態或者mount查看/mnt是不是已經掛載確定資源所在的機器。然後在那臺機器的/mnt新建立一些文件並停掉那臺機器上的heartbeat。看另一臺機器上/mnt是不是被自動掛載了呢?裏面是不是有剛創建的文件?good luck!

      總結:基本兩臺linux實現的雙機熱備到此就要結束了。回顧一下環境:兩臺機器;兩塊獨立的分區,最好是一樣大,只分區,而沒有格式化;linux操作系統;drbd網絡磁盤;heartbeat實現資源調度;好像就這麼多東西吧。可能您要說了,看完這篇文章,一點實際意義都沒有,因爲只是實現了共享磁盤。哈哈,我要說,要想發揮威力就要仔細的看一下heartbeat的資源調度了,有了這位大管家,還有啥實現不了的服務呢?
本文出自 “rainbird” 博客,轉載請與作者聯繫!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章