分布式復(fù)制塊設(shè)備drbd的配置

2017年2月26日22:38:21 發(fā)表評(píng)論 4,175 ℃

前提:

1)本配置共有兩個(gè)測(cè)試節(jié)點(diǎn),分別node1.amd5.cn和node2.amd5.cn,相的IP地址分別為172.16.100.11和172.16.100.12;

2)node1和node2兩個(gè)節(jié)點(diǎn)上各提供了一個(gè)大小相同的分區(qū)作為drbd設(shè)備;我們這里為在兩個(gè)節(jié)點(diǎn)上均為/dev/sda5,大小為512M;

3)系統(tǒng)為rhel5.8,x86平臺(tái);

1、準(zhǔn)備工作

兩個(gè)節(jié)點(diǎn)的主機(jī)名稱和對(duì)應(yīng)的IP地址解析服務(wù)可以正常工作,且每個(gè)節(jié)點(diǎn)的主機(jī)名稱需要跟"uname -n“命令的結(jié)果保持一致;因此,需要保證兩個(gè)節(jié)點(diǎn)上的/etc/hosts文件均為下面的內(nèi)容:

172.16.100.11 node1.amd5.cn node1

172.16.100.12 node2.amd5.cn node2

為了使得重新啟動(dòng)系統(tǒng)后仍能保持如上的主機(jī)名稱,還分別需要在各節(jié)點(diǎn)執(zhí)行類(lèi)似如下的命令:

Node1:

# sed -i 's@\(HOSTNAME=\).*@\1node1.amd5.cn@g'

# hostname node1.amd5.cn

Node2:

# sed -i 's@\(HOSTNAME=\).*@\1node2.amd5.cn@g'

# hostname node2.amd5.cn

2、安裝軟件包

drbd共有兩部分組成:內(nèi)核模塊和用戶空間的管理工具。其中drbd內(nèi)核模塊代碼已經(jīng)整合進(jìn)Linux內(nèi)核2.6.33以后的版本中,因此,如果您的內(nèi)核版本高于此版本的話,你只需要安裝管理工具即可;否則,您需要同時(shí)安裝內(nèi)核模塊和管理工具兩個(gè)軟件包,并且此兩者的版本號(hào)一定要保持對(duì)應(yīng)。

目前在用的drbd版本主要有8.0、8.2和8.3三個(gè)版本,其對(duì)應(yīng)的rpm包的名字分別為drbd, drbd82和drbd83,對(duì)應(yīng)的內(nèi)核模塊的名字分別為kmod-drbd, kmod-drbd82和kmod-drbd83。各版本的功能和配置等略有差異;我們實(shí)驗(yàn)所用的平臺(tái)為x86且系統(tǒng)為rhel5.8,因此需要同時(shí)安裝內(nèi)核模塊和管理工具。我們這里選用最新的8.3的版本(drbd83-8.3.8-1.el5.centos.i386.rpm和kmod-drbd83-8.3.8-1.el5.centos.i686.rpm),下載地址為:http://mirrors.sohu.com/centos/5.8/extras/i386/RPMS/。

實(shí)際使用中,您需要根據(jù)自己的系統(tǒng)平臺(tái)等下載符合您需要的軟件包版本,這里不提供各版本的下載地址。

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

# yum -y --nogpgcheck localinstall drbd83-8.3.8-1.el5.centos.i386.rpm kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

3、配置drbd

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

在配置文件中,global段僅能出現(xiàn)一次,且如果所有的配置信息都保存至同一個(gè)配置文件中而不分開(kāi)為多個(gè)文件的話,global段必須位于配置文件的最開(kāi)始處。目前global段中可以定義的參數(shù)僅有minor-count, dialog-refresh, disable-ip-verification和usage-count。

common段則用于定義被每一個(gè)資源默認(rèn)繼承的參數(shù),可以在資源定義中使用的參數(shù)都可以在common段中定義。實(shí)際應(yīng)用中,common段并非必須,但建議將多個(gè)資源共享的參數(shù)定義為common段中的參數(shù)以降低配置文件的復(fù)雜度。

resource段則用于定義drbd資源,每個(gè)資源通常定義在一個(gè)單獨(dú)的位于/etc/drbd.d目錄中的以.res結(jié)尾的文件中。資源在定義時(shí)必須為其命名,名字可以由非空白的ASCII字符組成。每一個(gè)資源段的定義中至少要包含兩個(gè)host子段,以定義此資源關(guān)聯(lián)至的節(jié)點(diǎn),其它參數(shù)均可以從common段或drbd的默認(rèn)中進(jìn)行繼承而無(wú)須定義。

下面的操作在node1.amd5.cn上完成。

1)復(fù)制樣例配置文件為即將使用的配置文件:

# cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc

2)配置/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;

        }

}

3、定義一個(gè)資源/etc/drbd.d/web.res,內(nèi)容如下:

resource web {

  on node1.amd5.cn {

    device    /dev/drbd0;

    disk      /dev/sda5;

    address   172.16.100.11:7789;

    meta-disk internal;

  }

  on node2.amd5.cn {

    device    /dev/drbd0;

    disk      /dev/sda5;

    address   172.16.100.12:7789;

    meta-disk internal;

  }

}

以上文件在兩個(gè)節(jié)點(diǎn)上必須相同,因此,可以基于ssh將剛才配置的文件全部同步至另外一個(gè)節(jié)點(diǎn)。

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

4、在兩個(gè)節(jié)點(diǎn)上初始化已定義的資源并啟動(dòng)服務(wù):

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

# drbdadm create-md web

2)啟動(dòng)服務(wù),在Node1和Node2上分別執(zhí)行:

/etc/init.d/drbd start

3)查看啟動(dòng)狀態(tài):

# cat /proc/drbd

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

GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 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命令來(lái)查看:

# drbd-overview 

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

從上面的信息中可以看出此時(shí)兩個(gè)節(jié)點(diǎn)均處于Secondary狀態(tài)。于是,我們接下來(lái)需要將其中一個(gè)節(jié)點(diǎn)設(shè)置為Primary。在要設(shè)置為Primary的節(jié)點(diǎn)上執(zhí)行如下命令:

# drbdsetup /dev/drbd0 primary –o

  注: 也可以在要設(shè)置為Primary的節(jié)點(diǎn)上使用如下命令來(lái)設(shè)置主節(jié)點(diǎn):

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

而后再次查看狀態(tài),可以發(fā)現(xiàn)數(shù)據(jù)同步過(guò)程已經(jīng)開(kāi)始:

# drbd-overview 

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

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

    

等數(shù)據(jù)同步完成以后再次查看狀態(tài),可以發(fā)現(xiàn)節(jié)點(diǎn)已經(jīng)牌實(shí)時(shí)狀態(tài),且節(jié)點(diǎn)已經(jīng)有了主次:

# drbd-overview 

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

5、創(chuàng)建文件系統(tǒng)

文件系統(tǒng)的掛載只能在Primary節(jié)點(diǎn)進(jìn)行,因此,也只有在設(shè)置了主節(jié)點(diǎn)后才能對(duì)drbd設(shè)備進(jìn)行格式化:

# mke2fs -j -L DRBD /dev/drbd0

# mkdir /mnt/drbd 

# mount /dev/drbd0 /mnt/drbd

6、切換Primary和Secondary節(jié)點(diǎn)

對(duì)主Primary/Secondary模型的drbd服務(wù)來(lái)講,在某個(gè)時(shí)刻只能有一個(gè)節(jié)點(diǎn)為Primary,因此,要切換兩個(gè)節(jié)點(diǎn)的角色,只能在先將原有的Primary節(jié)點(diǎn)設(shè)置為Secondary后,才能原來(lái)的Secondary節(jié)點(diǎn)設(shè)置為Primary:

Node1:

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

# umount /mnt/drbd

# drbdadm secondary web

查看狀態(tài):

# 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

使用下面的命令查看在此前在主節(jié)點(diǎn)上復(fù)制至此設(shè)備的文件是否存在:

# ls /mnt/drbd

 

drbd 8.4中第一次設(shè)置某節(jié)點(diǎn)成為主節(jié)點(diǎn)的命令

# 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.amd5.cn {

                device  /dev/drbd0;

                disk    /dev/vg0/mydrbd;

                address 172.16.200.11:7789;

                meta-disk       internal;

        }

        on node2.amd5.cn {

                device  /dev/drbd0;

                disk    /dev/vg0/mydrbd;

                address 172.16.200.12:7789;

                meta-disk       internal;

        }

}

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣(mài)中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: