兩臺Linux完美實現雙機熱備

Liuyiyi6110309發表於2020-12-18

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

  先來糾正一下自己的錯誤認識吧,沒接觸keepalived和heartbeat的時候,道聽途說的認為keepalived出現以後就沒有必要再用heartbeat了。在仔細學習了這兩個傳奇人物以後發現:keepalived是專門為高可用的叢集而誕生的,而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 root@192.168.1.12:/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!

相關文章