drbd部署及配置

一、環境準備:

1、兩個節點:

hostname node1

hostname node2


2、各個節點hosts文件添加:

192.168.23.148 node2

192.168.23.147 node1


[root@node2 drbd.d]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=node2

#

[root@node1 drbd.d]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=node1

[root@node1 drbd.d]# uname -n

node1

[root@node2 drbd.d]# uname -n

node2


3、配置雙機互信

ssh-keygen -t rsa -P ''

ssh-copy-id root@node2


4、配置時間同步並添加到計劃任務之中

*/5 * * * * /usr/sbin/ntpdate time.windows.com


5、爲各個節點預留一塊裸盤

Disk /dev/sdb: 5368 MB, 5368709120 bytes


2、安裝軟件包


drbd共有兩部分組成:內核模塊和用戶空間的管理工具。其中drbd內核模塊代碼已經整合進Linux內核2.6.33以後的版本中,因此,如果您的內核版本高於此版本的話,你只需要安裝管理工具即可;否則,您需要同時安裝內核模塊和管理工具兩個軟件包,並且此兩者的版本號一定要保持對應。


目前適用CentOS 5的drbd版本主要有8.0、8.2、8.3三個版本,其對應的rpm包的名字分別爲drbd, drbd82和drbd83,對應的內核模塊的名字分別爲kmod-drbd, kmod-drbd82和kmod-drbd83。而適用於CentOS 6的版本爲8.4,其對應的rpm包爲drbd和drbd-kmdl,但在實際選用時,要切記兩點:drbd和drbd-kmdl的版本要對應;另一個是drbd-kmdl的版本要與當前系統的內容版本相對應。各版本的功能和配置等略有差異;我們實驗所用的平臺爲x86_64且系統爲CentOS 6.5,因此需要同時安裝內核模塊和管理工具。我們這裏選用最新的8.4的版本(drbd-8.4.3-33.el6.x86_64.rpm和drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm),下載地址爲ftp://rpmfind.net/linux/atrpms/,請按照需要下載。


實際使用中,您需要根據自己的系統平臺等下載符合您需要的軟件包版本,這裏不提供各版本的下載地址。


下載完成後直接安裝即可:

# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm


3、配置drbd


drbd的主配置文件爲/etc/drbd.conf;爲了管理的便捷性,目前通常會將些配置文件分成多個部分,且都保存至/etc/drbd.d/目錄中,主配置文件中僅使用"include"指令將這些配置文件片斷整合起來。通常,/etc/drbd.d目錄中的配置文件爲global_common.conf和所有以.res結尾的文件。其中global_common.conf中主要定義global段和common段,而每一個.res的文件用於定義一個資源。


在配置文件中,global段僅能出現一次,且如果所有的配置信息都保存至同一個配置文件中而不分開爲多個文件的話,global段必須位於配置文件的最開始處。目前global段中可以定義的參數僅有minor-count, dialog-refresh, disable-ip-verification和usage-count。


common段則用於定義被每一個資源默認繼承的參數,可以在資源定義中使用的參數都可以在common段中定義。實際應用中,common段並非必須,但建議將多個資源共享的參數定義爲common段中的參數以降低配置文件的複雜度。


resource段則用於定義drbd資源,每個資源通常定義在一個單獨的位於/etc/drbd.d目錄中的以.res結尾的文件中。資源在定義時必須爲其命名,名字可以由非空白的ASCII字符組成。每一個資源段的定義中至少要包含兩個host子段,以定義此資源關聯至的節點,其它參數均可以從common段或drbd的默認中進行繼承而無須定義。


下面的操作在node1.magedu.com上完成。


1 配置/etc/drbd.d/global-common.conf

global {

        usage-count no;

        # minor-count dialog-refresh disable-ip-verification

}


common {

        protocol C;


        handlers {

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

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

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

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

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

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

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

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

        }


        startup {

                #wfc-timeout 120;

                #degr-wfc-timeout 120;

        }


        disk {

                on-io-error detach;

                #fencing resource-only;

        }


        net {

                cram-hmac-alg "sha1";

                shared-secret "mydrbdlab";

        }


        syncer {

                rate 1000M;

        }

}



2、定義一個資源/etc/drbd.d/web.res,內容如下:

resource web {

  on node1.magedu.com {

    device    /dev/drbd0;

    disk      /dev/sda5;

    address   172.16.100.7:7789;

    meta-disk internal;

  }

  on node2.magedu.com {

    device    /dev/drbd0;

    disk      /dev/sda5;

    address   172.16.100.8:7789;

    meta-disk internal;

  }

}

or

resource web {

device    /dev/drbd0;

    disk      /dev/sda5;

    meta-disk internal;

  on node1.magedu.com {

    address   172.16.100.7:7789;

  }

  on node2.magedu.com {

    address   172.16.100.8:7789;

  }

}



以上文件在兩個節點上必須相同,因此,可以基於ssh將剛纔配置的文件全部同步至另外一個節點。

# scp  /etc/drbd.d/*  node2:/etc/drbd.d/


3、在兩個節點上初始化已定義的資源並啓動服務:


1)初始化資源,在Node1和Node2上分別執行:

# drbdadm create-md web


2)啓動服務,在Node1和Node2上分別執行:

/etc/init.d/drbd start


3)查看啓動狀態:

# cat /proc/drbd

version: 8.3.8 (api:88/proto:86-94)

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16

 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----

    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:505964


也可以使用drbd-overview命令來查看:

# drbd-overview 

  0:web  Connected Secondary/Secondary Inconsistent/Inconsistent C r---- 


從上面的信息中可以看出此時兩個節點均處於Secondary狀態。於是,我們接下來需要將其中一個節點設置爲Primary。在要設置爲Primary的節點上執行如下命令:

# drbdadm primary --force resource


  注: 也可以在要設置爲Primary的節點上使用如下命令來設置主節點:

     # drbdadm -- --overwrite-data-of-peer primary web


而後再次查看狀態,可以發現數據同步過程已經開始:

# drbd-overview 

  0:web  SyncSource Primary/Secondary UpToDate/Inconsistent C r---- 

    [============>.......] sync'ed: 66.2% (172140/505964)K delay_probe: 35

    

等數據同步完成以後再次查看狀態,可以發現節點已經牌實時狀態,且節點已經有了主次:

# drbd-overview 

  0:web  Connected Primary/Secondary UpToDate/UpToDate C r---- 


4、創建文件系統


文件系統的掛載只能在Primary節點進行,因此,也只有在設置了主節點後才能對drbd設備進行格式化:

# mke2fs -j -L DRBD /dev/drbd0

# mkdir /mnt/drbd 

# mount /dev/drbd0 /mnt/drbd


5、切換Primary和Secondary節點


對主Primary/Secondary模型的drbd服務來講,在某個時刻只能有一個節點爲Primary,因此,要切換兩個節點的角色,只能在先將原有的Primary節點設置爲Secondary後,才能原來的Secondary節點設置爲Primary:


Node1:

# cp -r /etc/drbd.* /mnt/drbd  

# umount /mnt/drbd

# drbdadm secondary web


查看狀態:

# drbd-overview 

  0:web  Connected Secondary/Secondary UpToDate/UpToDate C r---- 


Node2:

# drbdadm primary web

# drbd-overview 

  0:web  Connected Primary/Secondary UpToDate/UpToDate C r---- 

# mkdir /mnt/drbd

# mount /dev/drbd0 /mnt/drbd


使用下面的命令查看在此前在主節點上覆制至此設備的文件是否存在:

# ls /mnt/drbd




補充:drbd 8.4中第一次設置某節點成爲主節點的命令

# drbdadm primary --force resource


配置資源雙主模型的示例:

resource mydrbd {


        net {

                protocol C;

                allow-two-primaries yes;

        }


        startup {

                become-primary-on both;

        }


        disk {

                fencing resource-and-stonith;

        }


        handlers {

                # Make sure the other node is confirmed

                # dead after this!

                outdate-peer "/sbin/kill-other-node.sh";

        }


        on node1.magedu.com {

                device  /dev/drbd0;

                disk    /dev/vg0/mydrbd;

                address 172.16.200.11:7789;

                meta-disk       internal;

        }


        on node2.magedu.com {

                device  /dev/drbd0;

                disk    /dev/vg0/mydrbd;

                address 172.16.200.12:7789;

                meta-disk       internal;

        }

}





報錯及解決?

[root@node2 drbd.d]# drbdadm create-md file

Writing meta data...

md_offset 1085698048

al_offset 1085665280

bm_offset 1085628416


Found ext3 filesystem

     2104376 kB data area apparently used

     1060184 kB left usable by current configuration


Device size would be truncated, which

would corrupt data and result in

'access beyond end of device' errors.

You need to either

   * use external meta data (recommended)

   * shrink that filesystem first

   * zero out the device (destroy the filesystem)

Operation refused.


Command 'drbdmeta 0 v08 /dev/sdb1 internal create-md' terminated with exit code 40

[root@node2 drbd.d]# 

執行如下命令:

[root@node2 drbd.d]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=100

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 2.16519 s, 48.4 MB/s

You have new mail in /var/spool/mail/root

[root@node2 drbd.d]# 


[root@node2 drbd.d]# drbdadm create-md file

Writing meta data...

initializing activity log

NOT initializing bitmap

New drbd meta data block successfully created.

[root@node2 drbd.d]# drbdadm create-md data

You want me to create a v08 style flexible-size internal meta data block.

There appears to be a v08 flexible-size internal meta data block

already in place on /dev/sdb2 at byte offset 1085730816

Do you really want to overwrite the existing v08 meta-data?

[need to type 'yes' to confirm] yes


Writing meta data...

initializing activity log

NOT initializing bitmap

New drbd meta data block successfully created.

[root@node2 drbd.d]# 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章