天天看點

Centos5.6 x86_64下安裝DRBD+Heartbeat+NFS

這篇文章其實是對《建構高可用Linux伺服器(第二版)》中第五章中“生産下的高可用NFS檔案伺服器”一節的補充,其實像drbd和heartbeat這些軟體都是可以通過yum來自動安裝的,例如安裝drbd的指令如下:

1

<code>yum -y </code><code>install</code> <code>drbd83 kmod-drbd83</code>

DRBD的配置檔案/etc/drbd.conf如下所示:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

<code>global {</code>

<code># minor-count dialog-refresh disable-ip-verification</code>

<code>usage-count no;         </code><code>#統計drbd的使用</code>

<code>}</code>

<code>common {</code>

<code>syncer  { rate 30M; }  </code><code>#同步速率,視帶寬而定</code>

<code>resource r0 {           </code><code>#建立一個資源,名字叫”r0”</code>

<code>protocol C;             </code><code>#選擇的是drbd的C 協定(資料同步協定,C為收到資料并寫入後傳回,确認成功)</code>

<code>handlers {              </code><code>#預設drbd的庫檔案</code>

<code>pri-on-incon-degr </code><code>"/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b &gt; /proc/sysrq-trigger ; reboot -f"</code><code>;</code>

<code>pri-lost-after-sb </code><code>"/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b &gt; /proc/sysrq-trigger ; reboot -f"</code><code>;</code>

<code>local</code><code>-io-error </code><code>"/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o &gt; /proc/sysrq-trigger ; halt -f"</code><code>;</code>

<code># fence-peer "/usr/lib/drbd/crm-fence-peer.sh";</code>

<code># split-brain "/usr/lib/drbd/notify-split-brain.sh root";</code>

<code># out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";</code>

<code># before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";</code>

<code># after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;</code>

<code>startup {</code>

<code># wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb</code>

<code>wfc-timeout 120;</code>

<code>degr-wfc-timeout 120;   </code>

<code>disk {</code>

<code># on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes</code>

<code># no-disk-drain no-md-flushes max-bio-bvecs</code>

<code>on-io-error detach;</code>

<code>net {</code>

<code># sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers</code>

<code># max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret</code>

<code># after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork</code>

<code>max-buffers 2048;</code>

<code>cram-hmac-alg </code><code>"sha1"</code><code>;</code>

<code>shared-secret </code><code>"123456"</code><code>;</code>

<code>#allow-two-primaries;</code>

<code>syncer {</code>

<code>rate 30M;</code>

<code># rate after al-extents use-rle cpu-mask verify-alg csums-alg</code>

<code>on centos1.cn7788.com { </code><code>#設定一個節點,分别以各自的主機名命名</code>

<code>device  </code><code>/dev/drbd0</code><code>; </code><code>#設定資源裝置/dev/drbd0 指向實際的實體分區 /dev/sdb1</code>

<code>disk    </code><code>/dev/sdb</code><code>;</code>

<code>address 192.168.11.32:7788;      </code><code>#設定監聽位址以及端口</code>

<code>meta-disk       internal;</code>

<code>on centos2.cn7788.com {         </code><code>#設定一個節點,分别以各自的主機名命名</code>

<code>address 192.168.11.33:7788;       </code><code>#設定監聽位址以及端口</code>

Heartbeat的配置檔案如下:

<code>logfile </code><code>/var/log/ha-log</code>

<code>logfacility local0</code>

<code>keepalive 2</code>

<code>deadtime 15</code>

<code>ucast eth0 192.168.11.32</code>

<code>ucast eth1 10.0.0.2</code>

<code>auto_failback off</code>

<code>node centos1.cn7788.com centos2.cn7788.com</code>

補充說明的幾點是:

一、許多朋友喜歡用獨立分區的方式來部署DRBD,這個也是可行的,我們在安裝系統時隻需要保留Free空間即可,在部署DRBD時再進行fdisk,這個是不需要寫進/etc/fstab表的,即不需要在安裝系統時就挂載,我在測試時發現用此方法部署DRBD還是比較繁瑣了,增加了整個實驗的複雜度,而且還需要操作dd,個人建議還是以獨立硬碟來作為DRBD的塊裝置較好;

二、Secondary主機用來做DRBD的硬碟或分區可以跟Primar主機的不一樣大小,但請不要小于Primary主機;

三、伺服器網卡及交換機我都推薦千M系列的,在測試中發現其同步速率界于100M-200M之間,這裡采用官方的建議,以最小值的30%帶寬來設定rate速率;

四、DRBD對網絡環境要求很高,建議用單獨的雙絞線來作為二台主機之間的心跳線,如果條件允許,可以考慮用二根以上的心跳線;如果這個環節做得好,基本上腦裂的問題是不存在的。其實整個實驗初期都可以在同一網絡下實作,後期再加心跳線也是可行的。

五、安裝Heartbeat時需要安裝二遍,即yum -y install heartbeat要執行二次;

六、DRBD+Heartbeat+NFS的實驗在測試時發現也很威猛,我經常在做寫入測試時忽然關掉primary機器,寫資料絲毫不影響,使用者完全感覺不到有機器挂掉了;

七、建議不要用根分區作為MySQL的datadir,不然你show database時會發現會出現名為#mysql50#lost+found的資料庫;

八、就算發生腦裂的問題,DRBD也不會丢失資料的,手動解決就是;正因為DRBD可靠,MySQL也推薦将其作為MySQL實作高可用方案之一,其具體操作詳見http://database.51cto.com/art/201209/355332.htm

本文轉自 撫琴煮酒 51CTO部落格,原文連結:http://blog.51cto.com/yuhongchun/976135,如需轉載請自行聯系原作者