1岳锁、HA之DRBD詳解(基于CentOS7.0)

一、DRBD簡(jiǎn)介

DRBD的全稱為:Distributed ReplicatedBlock Device(DRBD)分布式塊設(shè)備復(fù)制,DRBD是由內(nèi)核模塊和相關(guān)腳本而構(gòu)成毕泌,用以構(gòu)建高可用性的集群环鲤。其實(shí)現(xiàn)方式是通過(guò)網(wǎng)絡(luò)來(lái)鏡像整個(gè)設(shè)備纯趋。你可以把它看作是一種網(wǎng)絡(luò)RAID。它允許用戶在遠(yuǎn)程機(jī)器上建立一個(gè)本地塊設(shè)備的實(shí)時(shí)鏡像冷离。
1.1结闸、DRBD是如何工作的呢?
  (DRBD Primary)負(fù)責(zé)接收數(shù)據(jù),把數(shù)據(jù)寫(xiě)到本地磁盤(pán)并發(fā)送給另一臺(tái)主機(jī)(DRBD Secondary)酒朵。另一個(gè)主機(jī)再將數(shù)據(jù)存到自己的磁盤(pán)中。目前扎附,DRBD每次只允許對(duì)一個(gè)節(jié)點(diǎn)進(jìn)行讀寫(xiě)訪問(wèn)蔫耽,但這對(duì)于通常的故障切換高可用集群來(lái)說(shuō)已經(jīng)足夠用了。有可能以后的版本支持兩個(gè)節(jié)點(diǎn)進(jìn)行讀寫(xiě)存取。
1.2匙铡、DRBD與HA的關(guān)系
  一個(gè)DRBD系統(tǒng)由兩個(gè)節(jié)點(diǎn)構(gòu)成图甜,與HA集群類似,也有主節(jié)點(diǎn)和備用節(jié)點(diǎn)之分鳖眼,在帶有主要設(shè)備的節(jié)點(diǎn)上黑毅,應(yīng)用程序和操作系統(tǒng)可以運(yùn)行和訪問(wèn)DRBD設(shè)備(/dev/drbd*)。在主節(jié)點(diǎn)寫(xiě)入的數(shù)據(jù)通過(guò)DRBD設(shè)備存儲(chǔ)到主節(jié)點(diǎn)的磁盤(pán)設(shè)備中钦讳,同時(shí)矿瘦,這個(gè)數(shù)據(jù)也會(huì)自動(dòng)發(fā)送到備用節(jié)點(diǎn)對(duì)應(yīng)的DRBD設(shè)備,最終寫(xiě)入備用節(jié)點(diǎn)的磁盤(pán)設(shè)備上愿卒,在備用節(jié)點(diǎn)上缚去,DRBD只是將數(shù)據(jù)從DRBD設(shè)備寫(xiě)入到備用節(jié)點(diǎn)的磁盤(pán)中。現(xiàn)在大部分的高可用性集群都會(huì)使用共享存儲(chǔ)琼开,而DRBD也可以作為一個(gè)共享存儲(chǔ)設(shè)備易结,使用DRBD不需要太多的硬件的投資。因?yàn)樗赥CP/IP網(wǎng)絡(luò)中運(yùn)行柜候,所以搞动,利用DRBD作為共享存儲(chǔ)設(shè)備,要節(jié)約很多成本渣刷,因?yàn)閮r(jià)格要比專用的存儲(chǔ)網(wǎng)絡(luò)便宜很多鹦肿;其性能與穩(wěn)定性方面也不錯(cuò)

二、DRBD復(fù)制模式

2.1飞主、協(xié)議A:
  異步復(fù)制協(xié)議狮惜。一旦本地磁盤(pán)寫(xiě)入已經(jīng)完成,數(shù)據(jù)包已在發(fā)送隊(duì)列中碌识,則寫(xiě)被認(rèn)為是完成的碾篡。在一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),可能發(fā)生數(shù)據(jù)丟失筏餐,因?yàn)楸粚?xiě)入到遠(yuǎn)程節(jié)點(diǎn)上的數(shù)據(jù)可能仍在發(fā)送隊(duì)列开泽。盡管,在故障轉(zhuǎn)移節(jié)點(diǎn)上的數(shù)據(jù)是一致的魁瞪,但沒(méi)有及時(shí)更新穆律。這通常是用于地理上分開(kāi)的節(jié)點(diǎn)
2.2、協(xié)議B:
  內(nèi)存同步(半同步)復(fù)制協(xié)議导俘。一旦本地磁盤(pán)寫(xiě)入已完成且復(fù)制數(shù)據(jù)包達(dá)到了對(duì)等節(jié)點(diǎn)則認(rèn)為寫(xiě)在主節(jié)點(diǎn)上被認(rèn)為是完成的峦耘。數(shù)據(jù)丟失可能發(fā)生在參加的兩個(gè)節(jié)點(diǎn)同時(shí)故障的情況下,因?yàn)樵趥鬏斨械臄?shù)據(jù)可能不會(huì)被提交到磁盤(pán)
2.3旅薄、協(xié)議C:
  同步復(fù)制協(xié)議辅髓。只有在本地和遠(yuǎn)程節(jié)點(diǎn)的磁盤(pán)已經(jīng)確認(rèn)了寫(xiě)操作完成,寫(xiě)才被認(rèn)為完成。沒(méi)有任何數(shù)據(jù)丟失洛口,所以這是一個(gè)群集節(jié)點(diǎn)的流行模式矫付,但I(xiàn) / O吞吐量依賴于網(wǎng)絡(luò)帶寬
一般使用協(xié)議C,但選擇C協(xié)議將影響流量第焰,從而影響網(wǎng)絡(luò)時(shí)延买优。為了數(shù)據(jù)可靠性,我們?cè)谏a(chǎn)環(huán)境使用時(shí)須慎重選項(xiàng)使用哪一種協(xié)議

三挺举、 DRBD工作原理圖

DRBD是linux的內(nèi)核的存儲(chǔ)層中的一個(gè)分布式存儲(chǔ)系統(tǒng)杀赢,可用使用DRBD在兩臺(tái)Linux服務(wù)器之間共享塊設(shè)備,共享文件系統(tǒng)和數(shù)據(jù)豹悬。類似于一個(gè)網(wǎng)絡(luò)RAID-1的功能葵陵,如圖所示:


這里寫(xiě)圖片描述

四、安裝配置

4.1瞻佛、準(zhǔn)備:
兩個(gè)節(jié)點(diǎn)test1.inzwc.com和test2.inzwc.com均按照centos7.0系統(tǒng)脱篙,每個(gè)節(jié)點(diǎn)兩塊磁盤(pán),一塊用作根分區(qū)一塊用作drbd
配置hosts文件(2個(gè)節(jié)點(diǎn)都需執(zhí)行)
節(jié)點(diǎn)1

echo '192.168.91.221  test1.inzwc.com ' >>/etc/hosts
echo '192.168.91.222  test2.inzwc.com ' >>/etc/hosts
echo '192.168.91.223  test3.inzwc.com ' >>/etc/hosts
echo '192.168.91.221  mfsmaster ' >>/etc/hosts

節(jié)點(diǎn)2

echo '192.168.91.221  test1.inzwc.com ' >>/etc/hosts
echo '192.168.91.222  test2.inzwc.com ' >>/etc/hosts
echo '192.168.91.223  test3.inzwc.com ' >>/etc/hosts
echo '192.168.91.222  mfsmaster ' >>/etc/hosts

修改主機(jī)名:
節(jié)點(diǎn)1

 hostnamectl set-hostname test1.inzwc.com
 su -l

節(jié)點(diǎn)2

hostnamectl set-hostname test2.inzwc.com
su -l

更換yum源:
1伤柄、備份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

運(yùn)行以下命令生成緩存:

yum clean all
yum makecache 

安裝ntpdate
為了保證各服務(wù)器間時(shí)間一致绊困,使用ntpdate同步時(shí)間。

yum install -y ntpdate wget lrzsz vim net-tools

加入crontab
crontab -l

1 * * * *  (/usr/sbin/ntpdate -s ntp1.aliyun.com;/usr/sbin/hwclock -w) > /dev/null 2>&1

4.2适刀、配置信任關(guān)系(2個(gè)節(jié)點(diǎn)都需執(zhí)行):

 ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
 ssh-copy-id test1.inzwc.com
 ssh-copy-id test2.inzwc.com

4.3秤朗、磁盤(pán)分區(qū)如下
節(jié)點(diǎn)1

root># lsblk
6DE9D5F3-2096-4D93-8FAC-D1B6B1206A83.png

節(jié)點(diǎn)2

root># lsblk
92C5806A-7CBA-403C-9015-47A2A1D8C68C.png

4.4、創(chuàng)建lvm(2個(gè)節(jié)點(diǎn)都需執(zhí)行)

pvcreate /dev/vdb
vgcreate mfsdata /dev/vdb
lvcreate --size 8G --name mfsmeta mfsdata
lvcreate --name data1 -l 100%FREE mfsdata #使用卷組mfsdata剩下的所有空間創(chuàng)建邏輯卷data1
mkdir /data1
mkfs.xfs /dev/mfsdata/data1
mount /dev/mfsdata/data1 /data1   #這個(gè)空間是給mfschunkserver使用

4.5笔喉、關(guān)閉SeLinux和防火墻(2個(gè)節(jié)點(diǎn)都需執(zhí)行)

setenforce 0
sed -i.bak "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sed -i "s/SELINUXTYPE=targeted/SELINUXTYPE=disabled/g" /etc/selinux/config
systemctl stop firewalld    # 關(guān)閉服務(wù)
systemctl disable firewalld    # 禁止開(kāi)機(jī)啟動(dòng)

4.6取视、安裝drbd(2個(gè)節(jié)點(diǎn)都需執(zhí)行)

yum install kernel-devel  kernel kernel-headers -y

需要執(zhí)行上面的命令,先升級(jí)內(nèi)核常挚,然后重啟作谭,不然會(huì)報(bào)下面錯(cuò)誤

modprobe drbd
modprobe: FATAL: Module drbd not found.
加載不了drbd模塊
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum install -y kmod-drbd84 drbd84-utils

五、配置文件介紹

/etc/drbd.conf #主配置文件
/etc/drbd.d/global_common.conf #全局配置文件
a奄毡、/etc/drbd.conf說(shuō)明
主配置文件中包含了全局配置文件及”drbd.d/”目錄下以.res結(jié)尾的文件

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";
include "drbd.d/*.res";

b折欠、/etc/drbd.d/global_common.conf說(shuō)明

global {
        usage-count yes;
        # minor-count dialog-refresh disable-ip-verification
}

common {
        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 degr-wfc-timeout outdated-wfc-timeout wait-after-sb
                wfc-timeout 120;
                degr-wfc-timeout 120;
        }

        options {
                # cpu-mask on-no-data-accessible
        }

        disk {
                # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
                # disk-drain md-flushes resync-rate resync-after al-extents
                # c-plan-ahead c-delay-target c-fill-target c-max-rate
                # c-min-rate disk-timeout
                al-extents 3389;
                disk-barrier no;
                disk-flushes no;
                on-io-error detach;
                resync-rate 40M;
        }

        net {
                # protocol timeout max-epoch-size max-buffers unplug-watermark
                # connect-int ping-int sndbuf-size rcvbuf-size ko-count
                # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
                # after-sb-1pri after-sb-2pri always-asbp rr-conflict
                # ping-timeout data-integrity-alg tcp-cork on-congestion
                # congestion-fill congestion-extents csums-alg verify-alg
                # use-rle
                cram-hmac-alg sha1;
                shared-secret "zwcdrbd224";

                max-buffers 8000;
                max-epoch-size 8000;
                unplug-watermark 16;
                sndbuf-size 512k;

        }
}

c、創(chuàng)建/etc/drbd.d/drbd.res并寫(xiě)入

vim /etc/drbd.d/drbd.res
resource r0 {
protocol C;
meta-disk internal;
device /dev/drbd0;
syncer {
verify-alg sha1;
}
net {
allow-two-primaries;
}
on test1.inzwc.com{
  disk      /dev/mfsdata/mfsmeta;
  address   192.168.91.221:7789;
  }
on test2.inzwc.com{
  disk     /dev/mfsdata/mfsmeta;
  address 192.168.91.222:7789;
  }
}

d吼过、將配置文件拷貝到節(jié)點(diǎn)2上

root># scp -rp  /etc/drbd.d/* test2.inzwc.com:/etc/drbd.d/

6锐秦、啟用drbd

a、主節(jié)點(diǎn)(節(jié)點(diǎn)1)

drbdadm create-md r0
modprobe drbd
drbdadm up r0

b盗忱、配置對(duì)端節(jié)點(diǎn)(節(jié)點(diǎn)2)

drbdadm create-md r0
modprobe drbd
drbdadm up r0
或者節(jié)點(diǎn)1酱床,遠(yuǎn)程執(zhí)行命令
ssh test2.inzwc.com “drbdadm create-md r0”
ssh test2.inzwc.com “modprobe drbd”
ssh test2.inzwc.com “drbdadm up r0”

c、強(qiáng)制將設(shè)置為primary(節(jié)點(diǎn)1)

drbdadm --force primary r0

#查看狀態(tài) drbd-overview  或 cat /proc/drbd
test1.inzwc.com<2017-02-25 00:01:53> /etc/drbd.d
root># cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
    ns:391092 nr:0 dw:0 dr:392168 al:8 bm:0 lo:0 pe:6 ua:1 ap:0 ep:1 wo:d oos:7998568
    [>....................] sync'ed:  4.7% (7808/8188)M
    finish: 0:04:06 speed: 32,476 (32,476) K/sec
#發(fā)現(xiàn)正在同步數(shù)據(jù)
c趟佃、創(chuàng)建文件系統(tǒng)斤葱,格式化設(shè)備并掛載(只能在主節(jié)點(diǎn)執(zhí)行)

文件系統(tǒng)只能掛載在主(Primary)節(jié)點(diǎn)上慷垮,因此在設(shè)置好主節(jié)點(diǎn)后才可以對(duì)DRBD設(shè)備進(jìn)行格式化操作
格式化文件系統(tǒng)

mkfs.xfs /dev/drbd0
mkdir /drbddata

掛載文件系統(tǒng)

mount /dev/drbd0 /drbddata

查看掛載

root># mount |grep drbd
/dev/drbd0 on /mfsmastermeta type xfs (rw,relatime,attr2,inode64,noquota)

注釋:
“/dev/drbd0”為資源中定義已定義的資源名稱
查看DRBD狀態(tài)

root># drbd-overview
 0:r0/0  Connected Primary/Primary UpToDate/UpToDate /mfsmastermeta xfs 8.0G 33M 8.0G 1%

注釋:
Primary:當(dāng)前節(jié)點(diǎn)為主;在前面為當(dāng)前節(jié)點(diǎn)
Secondary:備用節(jié)點(diǎn)為次

7揍堕、相關(guān)配置操作

7.1、資源的連接狀態(tài)詳細(xì)介紹
如何查看資源連接狀態(tài)汤纸?

root># drbdadm cstate r0
Connected

資源的連接狀態(tài)衩茸;一個(gè)資源可能有以下連接狀態(tài)中的一種
StandAlone 獨(dú)立的:網(wǎng)絡(luò)配置不可用;資源還沒(méi)有被連接或是被管理斷開(kāi)(使用 drbdadm disconnect 命令)贮泞,或是由于出現(xiàn)認(rèn)證失敗或是腦裂的情況
Disconnecting 斷開(kāi):斷開(kāi)只是臨時(shí)狀態(tài)楞慈,下一個(gè)狀態(tài)是StandAlone獨(dú)立的
Unconnected 懸空:是嘗試連接前的臨時(shí)狀態(tài),可能下一個(gè)狀態(tài)為WFconnection和WFReportParams
Timeout 超時(shí):與對(duì)等節(jié)點(diǎn)連接超時(shí)啃擦,也是臨時(shí)狀態(tài)囊蓝,下一個(gè)狀態(tài)為Unconected懸空
BrokerPipe:與對(duì)等節(jié)點(diǎn)連接丟失,也是臨時(shí)狀態(tài)令蛉,下一個(gè)狀態(tài)為Unconected懸空
NetworkFailure:與對(duì)等節(jié)點(diǎn)推動(dòng)連接后的臨時(shí)狀態(tài)聚霜,下一個(gè)狀態(tài)為Unconected懸空
ProtocolError:與對(duì)等節(jié)點(diǎn)推動(dòng)連接后的臨時(shí)狀態(tài),下一個(gè)狀態(tài)為Unconected懸空
TearDown 拆解:臨時(shí)狀態(tài)珠叔,對(duì)等節(jié)點(diǎn)關(guān)閉蝎宇,下一個(gè)狀態(tài)為Unconected懸空
WFConnection:等待和對(duì)等節(jié)點(diǎn)建立網(wǎng)絡(luò)連接
WFReportParams:已經(jīng)建立TCP連接,本節(jié)點(diǎn)等待從對(duì)等節(jié)點(diǎn)傳來(lái)的第一個(gè)網(wǎng)絡(luò)包
Connected 連接:DRBD已經(jīng)建立連接祷安,數(shù)據(jù)鏡像現(xiàn)在可用姥芥,節(jié)點(diǎn)處于正常狀態(tài)
StartingSyncS:完全同步,有管理員發(fā)起的剛剛開(kāi)始同步汇鞭,未來(lái)可能的狀態(tài)為SyncSource或PausedSyncS
StartingSyncT:完全同步凉唐,有管理員發(fā)起的剛剛開(kāi)始同步,下一狀態(tài)為WFSyncUUID
WFBitMapS:部分同步剛剛開(kāi)始霍骄,下一步可能的狀態(tài)為SyncSource或PausedSyncS
WFBitMapT:部分同步剛剛開(kāi)始台囱,下一步可能的狀態(tài)為WFSyncUUID
WFSyncUUID:同步即將開(kāi)始,下一步可能的狀態(tài)為SyncTarget或PausedSyncT
SyncSource:以本節(jié)點(diǎn)為同步源的同步正在進(jìn)行
SyncTarget:以本節(jié)點(diǎn)為同步目標(biāo)的同步正在進(jìn)行
PausedSyncS:以本地節(jié)點(diǎn)是一個(gè)持續(xù)同步的源腕巡,但是目前同步已經(jīng)暫停玄坦,可能是因?yàn)榱硗庖粋€(gè)同步正在進(jìn)行或是使用命令(drbdadm pause-sync)暫停了同步
PausedSyncT:以本地節(jié)點(diǎn)為持續(xù)同步的目標(biāo),但是目前同步已經(jīng)暫停绘沉,這可以是因?yàn)榱硗庖粋€(gè)同步正在進(jìn)行或是使用命令(drbdadm pause-sync)暫停了同步
VerifyS:以本地節(jié)點(diǎn)為驗(yàn)證源的線上設(shè)備驗(yàn)證正在執(zhí)行
VerifyT:以本地節(jié)點(diǎn)為驗(yàn)證目標(biāo)的線上設(shè)備驗(yàn)證正在執(zhí)行
7.2煎楣、資源角色
查看資源角色命令

test1.inzwc.com<2017-02-14 18:14:44> /etc/drbd.d
root># drbdadm role r0
Primary/Secondary

test1.inzwc.com<2017-02-14 18:14:48> /etc/drbd.d
root># cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:8400954 nr:0 dw:12638 dr:8390626 al:15 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

test2.inzwc.com<2017-02-14 18:14:55> ~
root># drbdadm role r0
Secondary/Primary

test2.inzwc.com<2017-02-14 18:16:00> ~
root># cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:8400954 dw:8400954 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

注釋:
Parimary 主:資源目前為主,并且可能正在被讀取或?qū)懭氤瞪。绻皇请p主只會(huì)出現(xiàn)在兩個(gè)節(jié)點(diǎn)中的其中一個(gè)節(jié)點(diǎn)上
Secondary 次:資源目前為次择懂,正常接收對(duì)等節(jié)點(diǎn)的更新
Unknown 未知:資源角色目前未知,本地的資源不會(huì)出現(xiàn)這種狀態(tài)

7.3另玖、硬盤(pán)狀態(tài)
查看硬盤(pán)狀態(tài)命令

root># drbdadm dstate r0
UpToDate/UpToDate

本地和對(duì)等節(jié)點(diǎn)的硬盤(pán)有可能為下列狀態(tài)之一:
Diskless 無(wú)盤(pán):本地沒(méi)有塊設(shè)備分配給DRBD使用困曙,這表示沒(méi)有可用的設(shè)備表伦,或者使用drbdadm命令手工分離或是底層的I/O錯(cuò)誤導(dǎo)致自動(dòng)分離
Attaching:讀取無(wú)數(shù)據(jù)時(shí)候的瞬間狀態(tài)
Failed 失敗:本地塊設(shè)備報(bào)告I/O錯(cuò)誤的下一個(gè)狀態(tài)慷丽,其下一個(gè)狀態(tài)為Diskless無(wú)盤(pán)
Negotiating:在已經(jīng)連接的DRBD設(shè)置進(jìn)行Attach讀取無(wú)數(shù)據(jù)前的瞬間狀態(tài)
Inconsistent:數(shù)據(jù)是不一致的蹦哼,在兩個(gè)節(jié)點(diǎn)上(初始的完全同步前)這種狀態(tài)出現(xiàn)后立即創(chuàng)建一個(gè)新的資源。此外要糊,在同步期間(同步目標(biāo))在一個(gè)節(jié)點(diǎn)上出現(xiàn)這種狀態(tài)
Outdated:數(shù)據(jù)資源是一致的纲熏,但是已經(jīng)過(guò)時(shí)
DUnknown:當(dāng)對(duì)等節(jié)點(diǎn)網(wǎng)絡(luò)連接不可用時(shí)出現(xiàn)這種狀態(tài)
Consistent:一個(gè)沒(méi)有連接的節(jié)點(diǎn)數(shù)據(jù)一致,當(dāng)建立連接時(shí)锄俄,它決定數(shù)據(jù)是UpToDate或是Outdated
UpToDate:一致的最新的數(shù)據(jù)狀態(tài)局劲,這個(gè)狀態(tài)為正常狀態(tài)

7.4、啟用和禁用資源

drbdadm up <resource>
手動(dòng)啟用資源
drbdadm up r0
手動(dòng)禁用資源
drbdadm down r0

注釋:
resource:為資源名稱奶赠;當(dāng)然也可以使用all表示[停用|啟用]所有資源
7.5鱼填、升級(jí)和降級(jí)資源

升級(jí)資源
drbdadm primary <resource>
降級(jí)資源
drbdadm secondary <resource>

注釋:在單主模式下的DRBD,兩個(gè)節(jié)點(diǎn)同時(shí)處于連接狀態(tài)毅戈,任何一個(gè)節(jié)點(diǎn)都可以在特定的時(shí)間內(nèi)變成主苹丸;但兩個(gè)節(jié)點(diǎn)中只能一為主,如果已經(jīng)有一個(gè)主竹祷,需先降級(jí)才可能升級(jí)谈跛;在雙主模式下沒(méi)有這個(gè)限制
7.6、初始化設(shè)備同步
選擇一個(gè)初始同步源塑陵;如果是新初始化的或是空盤(pán)感憾,這個(gè)選擇可以是任意的,但是如果其中的一個(gè)節(jié)點(diǎn)已經(jīng)在使用并包含有用的數(shù)據(jù)令花,那么選擇同步源是至關(guān)重要的阻桅;如果選錯(cuò)了初始化同步方向,就會(huì)造成數(shù)據(jù)丟失兼都,因此需要十分小心
啟動(dòng)初始化完全同步嫂沉,這一步只能在初始化資源配置的一個(gè)節(jié)點(diǎn)上進(jìn)行,并作為同步源選擇的節(jié)點(diǎn)上扮碧;命令如下:

test1.inzwc.com<2017-02-14 18:25:13> /etc/drbd.d
root># drbdadm -- --overwrite-data-of-peer primary r0
root># cat /proc/drbd     #查看同步進(jìn)度
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
    ns:1897624 nr:0 dw:0 dr:1901216 al:0 bm:115 lo:0 pe:3 ua:3 ap:0 ep:1 wo:f oos:207988
    [=================>..] synced: 90.3% (207988/2103412)K
    finish: 0:00:07 speed: 26,792 (27,076) K/sec
######當(dāng)同步完成時(shí)如以下?tīng)顟B(tài)
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:2103412 nr:0 dw:0 dr:2104084 al:0 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

注釋: r0:為資源名稱
查看同步進(jìn)度也可使用以下命令

root># drbd-overview
 0:r0/0  Connected Primary/Primary UpToDate/UpToDate /mfsmastermeta xfs 8.0G 33M 8.0G 1%

注釋:
Primary:當(dāng)前節(jié)點(diǎn)為主趟章;在前面為當(dāng)前節(jié)點(diǎn)
Secondary:備用節(jié)點(diǎn)為次

7.8、切換主備測(cè)試是否同步成功

節(jié)點(diǎn)1執(zhí)行(主節(jié)點(diǎn)切換為備節(jié)點(diǎn))

[root@server1 drbd.d]# mount /dev/drbd0 /mfsmastermeta/ #將格式化好的磁盤(pán)掛載到/mfsmastermeta上
[root@server1 drbd.d]# cd /mfsmastermeta/  #切換到/mfsmastermeta
[root@server1 mfsmastermeta]# ls
lost+found
[root@server1 mfsmastermeta]# touch file{1..4}   #創(chuàng)建幾個(gè)文件
[root@server1 mfsmastermeta]# ls
file1  file2  file3 file4  lost+found
[root@server1 mfsmastermeta]# cd 
[root@server1 ~]# umount /mfsmastermeta/    #卸載
[root@server1 ~]# drbdadm secondary r0    #將服務(wù)端1變成secondary
[root@server1 ~]# cat /proc/drbd     或  drbd-overview #查看
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:2163404 nr:0dw:66352 dr:2098429 al:13 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

節(jié)點(diǎn)2執(zhí)行(備節(jié)點(diǎn)切換為主節(jié)點(diǎn))

[root@server2 drbd.d]# drbdadm primary r0  #將服務(wù)端2變成primary
[root@server2 drbd.d]# cat /proc/drbd  #查看
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:2163404dw:2163404 dr:664 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
 
[root@server2 drbd.d]# mount /dev/drbd0 /mfsmastermeta/ #掛載
[root@server2 drbd.d]# cd /mfsmastermeta/
[root@server2 mnt]# ls    #查看慎王,同步成功
file1  file2  file3 file4  lost+found

8蚓土、DRBD腦裂的模擬及修復(fù)

注釋:我們還接著上面的實(shí)驗(yàn)繼續(xù)進(jìn)行,現(xiàn)在HA-NODE2為主節(jié)點(diǎn)而HA-NODE1為備節(jié)點(diǎn)
8.1赖淤、斷開(kāi)主(parmary)節(jié)點(diǎn)蜀漆;
關(guān)機(jī)、斷開(kāi)網(wǎng)絡(luò)或重新配置其他的IP都可以咱旱;這里選擇的是斷開(kāi)網(wǎng)絡(luò)
8.2确丢、查看兩節(jié)點(diǎn)狀態(tài)

[root@ha-node2 ~]# drbd-overview
  0:drbd/0  WFConnection Primary/Unknown UpToDate/DUnknown C r----- /mnt ext4 2.0G 68M 1.9G 4%
[root@ha-node1 ~]# drbd-overview
  0:drbd/0  StandAlone Secondary/Unknown UpToDate/DUnknown r-----

由上可以看到兩個(gè)節(jié)點(diǎn)已經(jīng)無(wú)法通信绷耍;HA-NODE2為主節(jié)點(diǎn),HA-NODE1為備節(jié)點(diǎn)

8.3鲜侥、將HA-NODE1節(jié)點(diǎn)升級(jí)為主(primary)節(jié)點(diǎn)并掛載資源

[root@ha-node1 ~]# umount -l /mfsmastermeta
[root@ha-node1 ~]# drbdadm primary r0
[root@ha-node1 ~]# drbd-overview
  0:drbd/0  StandAlone Primary/Unknown UpToDate/DUnknown r-----
[root@ha-node1 ~]# mount /dev/drbd0 /mfsmastermeta
[root@ha-node1 ~]# mount | grep drbd0
/dev/drbd1 on /mnt type ext4 (rw) 

8.4褂始、假如原來(lái)的主(primary)節(jié)點(diǎn)修復(fù)好重新上線了,這時(shí)出現(xiàn)了腦裂情況

[root@ha-node2 ~]# tail -f /var/log/messages
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: Terminating drbd_a_drbd
Sep 19 01:56:06 ha-node2 kernel: block drbd1: helper command: /sbin/drbdadm initial-split-brain minor-0 exit code 0 (0x0)
Sep 19 01:56:06 ha-node2 kernel: block drbd1: Split-Brain detected but unresolved, dropping connection!
Sep 19 01:56:06 ha-node2 kernel: block drbd1: helper command: /sbin/drbdadm split-brain minor-0
Sep 19 01:56:06 ha-node2 kernel: block drbd1: helper command: /sbin/drbdadm split-brain minor-0 exit code 0 (0x0)
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: conn( NetworkFailure -> Disconnecting )
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: error receiving ReportState, e: -5 l: 0!
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: Connection closed
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: conn( Disconnecting -> StandAlone )
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: receiver terminated
Sep 19 01:56:06 ha-node2 kernel: d-con drbd: Terminating drbd_r_drbd
Sep 19 01:56:18 ha-node2 kernel: block drbd1: role( Primary -> Secondary ) 

8.5描函、再次查看兩節(jié)點(diǎn)的狀態(tài)

[root@ha-node2 ~]# drbdadm role r0
Primary/Unknown

參考文檔:http://man.linuxde.net/vgcreate
http://blog.csdn.net/wylfengyujiancheng/article/details/50669947
http://www.linuxidc.com/Linux/2015-03/115465.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末病袄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赘阀,更是在濱河造成了極大的恐慌,老刑警劉巖脑奠,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件基公,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡宋欺,警方通過(guò)查閱死者的電腦和手機(jī)轰豆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)齿诞,“玉大人酸休,你說(shuō)我怎么就攤上這事〉昏荆” “怎么了斑司?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)但汞。 經(jīng)常有香客問(wèn)我宿刮,道長(zhǎng),這世上最難降的妖魔是什么私蕾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任僵缺,我火速辦了婚禮,結(jié)果婚禮上踩叭,老公的妹妹穿的比我還像新娘磕潮。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布畔况。 她就那樣靜靜地躺著十性,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冤今。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天茂缚,我揣著相機(jī)與錄音戏罢,去河邊找鬼屋谭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛龟糕,可吹牛的內(nèi)容都是我干的桐磁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼讲岁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼我擂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起缓艳,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤校摩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后阶淘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體衙吩,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年溪窒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坤塞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澈蚌,死狀恐怖摹芙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宛瞄,我是刑警寧澤浮禾,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站坛悉,受9級(jí)特大地震影響伐厌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裸影,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一挣轨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轩猩,春花似錦卷扮、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至彤委,卻和暖如春鞭铆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背焦影。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工车遂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留封断,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓舶担,卻偏偏與公主長(zhǎng)得像坡疼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衣陶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容