DRBD的安装与配置
DRBD安裝與配置
1.什么是DRBD?
DRBD是由內核模塊和相關腳本構成,用以構建高可用性的集群。其實現方式是通過網絡來鏡像整個設備。它允許用戶在遠程機器上建立一個本地塊設備的實時鏡像。也可以把它看成一個網絡RAID1。
工作原理:
DRBD負責接收數據,把數據寫到本地磁盤,然后發送給另一個主機。另一個主機再將數據存到自己的磁盤中。目前,DRBD每次只允許對一個節點進行讀寫訪問,這對于通常的故障切換高可用性集群已經夠了。
DRBD協議:
A:數據一旦寫入磁盤并發送到網絡中就認為完成了寫入操作
B:收到接受確認就認為完成了寫入操作
C:收到寫入確認就完成了寫入操作
目前運用最多的就是C協議
下面就開始安裝配置DRBD
1.前提
1)本環境共有兩個測試節點,分別ha1.fpj.com和ha2.fpj.com,相的IP地址分別為192.168.3.100和192.168.3.101
2) ha1.fpj.com和ha2.fpj.com兩個節點上各提供了一個大小相同的分區作為drbd設備;我們這里為在兩個節點上均為/dev/sdb1,大小為10GB;
3)?系統一臺為Centos6.3.i686,一臺為Centos6.5.i686(先前因安裝了)
4)內核分別為2.6.32-279.el6.i686;2.6.32-431.el6.i686
2.準備工作
? 配置雙方hostname、hosts并建立ssh無密碼互通
?2/1.下載軟件包
? ?wget?http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
? ?drbd共有兩部分組成:內核模塊和用戶空間的管理工具。
?2/2.安裝kernel-devel與kernel-headers最好用本地源安裝
3.安裝DRBD
我這邊用編譯安裝,兩個節點上都需要安裝。
tar zxvf drbd-8.4.3.tar.gz
cd drbd-8.4.3
./configure --prefix=/usr/local/drbd --with-km #--!prefix是制定安裝路徑。--with-km是啟用內核模塊
make KDIR=/usr/src/kernels/2.6.32-431.el6.i686/ #--!KDIR指的是自己的內核路徑
make install
mkdir -p /usr/local/drbd/var/run/drbd? #--!這里需創建這個目錄,不然啟動服務會報錯
cp /usr/local/drbd/etc/rc.d/init.d/drbd? /etc/rc.d/init.d/
chkconfig --add drbd??
chkconfig drbd on
安裝DRBD模塊
cd drbd
make clean
make KDIR=/usr/src/kernels/2.6.32-431.el6.i686/
cp drbd.ko /lib/modules/2.6.32-431.el6.i686/kernel/lib/
moprobe drbd #加載內核模塊
lsmod | grep drbd
drbd ? ? ? ? ? ? ? ? ?292339 ?0
libcrc32c ? ? ? ? ? ? ? ?841 ?1 drbd
4.配置DRBD
通常/etc/drbd.d目錄中的配置文件為global_common.conf和所有以.res結尾的文件。其中global_common.conf中主要定義global段和common段。每一個.res的文件用于定義一個資源。resource段則用于定義drbd資源,每個資源通常定義在一個單獨的位于/etc/drbd.d目錄中的以.res結尾的文件中。資源在定義時必須為其命名,名字可以由非空白的ASCII字符組成。每一個資源段的定義中至少要包含兩個host子段,以定義此資源關聯至的節點,其它參數均可以從common段或drbd的默認中進行繼承而無須定義。
下面,先在ha1主機上配置global_common.conf與定義fpj.res資源,配置定義完以后拷貝到ha2一份。
1.配置global-common.conf
global {
??????? usage-count no;#是否參加drbd的使用者統計,默認為yes
??????? # minor-count dialog-refresh disable-ip-verification
}
common {
??????? protocol C;#使用drbd的同步協議
??????? 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";
???????????????
??????? }
??????? startup {
??????????????? #wfc-timeout 120;
??????????????? #degr-wfc-timeout 120;
??????? }
??????? disk {
??????????????? on-io-error detach;#配置I/O錯誤處理策略為分離
??????????????? rate 200M;#設置主備節點同步時的網絡速率
??????? }
??????? net {
??????????????? cram-hmac-alg "sha1";
??????????????? shared-secret "123456";
??????? }
}
2.定義一個資源fpj.res,內容如下:
resource fpj {?? #fpj是定義資源的名字
?? on ha1 {?? #on后面是主機名稱
?? address 192.168.3.100:7789;#設置DRBD的監聽端口,用于與另一臺主機通信。
?? device /dev/drbd0; #drbd設備名稱
?? disk /dev/sdb1;??? #drbd使用的磁盤分區為sdb1
?? meta-disk ? ? internal;
?? }
? on ha2 {
? address 192.168.3.101:7789;
?? device /dev/drbd0;
?? disk /dev/sdb1;
?? meta-disk ? ?internal;
?? }
}
3.在兩個節點上初始化已定義完的資源并啟動drbd服務
drbdadm create-md fpj:
再啟動drbd服務:
查看下啟動狀態:
從上面的圖片中可以看出此時兩個節點均處于Secondary狀態。我們接下來需要將其中一個節點設置為Primary。在要設置為Primary的節點上執行如下命令:
drbdadm-- --overwrite-data-of-peer primary fpj也可以用?drbdadmn primary --force fpj
而后再次查看狀態,可以發現數據同步過程已經開始:
等數據同步完,再次查看已經有了主和備:
4.格式化文件系統;注意:文件系統的掛載只能在Primary節點進行。因此,也只有在設置了主節點后才能對drbd設備進行格式化:
mkfs.ext4 /dev/drbd0
mkdir /mydata? #創建掛載目錄
mount /dev/drbd0 /mydata#掛載文件系統
df -h #查看掛載
寫入文件,我這里寫入了一個fpj.txt的文件:
5.切換主備節點
對主Primary/Secondary的drbd服務來講,在某個時間只能有一個節點為Primary。因此,要切換兩個節點的角色,只能在先將原有的Primary節點設置為Secondary后,才能原來的Secondary節點設置為Primary:(注意:這里必須先把ha1上的掛載目錄卸載掉)
先將ha1設置為備節點:
drbdadmn secondary fpj
再將ha2設置為主節點:
drbdadmn primary fpj
再ha2上創建目錄,掛載磁盤,查看下fpj.txt是否存在:成功切換
至此,DRBD安裝配置成功!!
轉載于:https://blog.51cto.com/fupj1/1631787
總結
以上是生活随笔為你收集整理的DRBD的安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序实现九九乘法表
- 下一篇: leetcode之Insertion S