兩個節點,一主一次:Host一、Host2html
節點環境node
(1)確保系統中DRBD Module已加載mysql
Step 1. 檢查系統中是否加載DRBD Modulegit
# lsmod | grep drbdsql
返回結果,則標明DRBD模塊已加載,跳過第二、3步;不然,繼續第2步。vim
Step 2. 檢查系統中是否存在DRBD Module安全
# modprobe drbd網絡
不返回結果,則代表DRBD模塊存在且已加載成功,跳過第3步;不然繼續第3步。less
Step 3. 安裝DRBD Moduledom
方案1: 從http://drbd.linbit.com/download/packages/下載二進制包進行安裝
方案2:從http://oss.linbit.com/drbd/ 下載源碼包進行安裝。
(a)源碼包在8.4.5以前,下載drbd-****.tar.gz,解壓到/usr/src/,在解壓後的目錄下,執行下列命令
#./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-km
#make
#make install
(b)源碼包在8.4.5版本後, User Space Tools從內核包中分離出來了。執行下列命令
#make
#make install
注意: ./configure 命令配置生成makefile的參數詳細參見: http://drbd.linbit.com/users-guide-8.4/s-build-from-source.html
(2)安裝 User Space Tools
方案 1. 從http://drbd.linbit.com/download/packages/下載二進制包進行安裝
方案2. 從http://oss.linbit.com/drbd/ 下載源碼包進行安裝。
(a) 安裝8.4.5以前的版本。
若是本身動手安裝過DRBD Module,則此不須要再次安裝;不然,在解壓後的目錄下執行下列命令
#./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
#make
#make install
(b) 安裝8.4.5以後的版本。
下載drbd-utils-***.tar.gz,解壓到/usr/src/,在解壓後目錄中執行下列命令
# ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
# make
# make install
(3)配置 DRBD
Step 1. 配置底層存儲
當你安裝完DRBD後,你必須在兩個集羣節點上留下大小相同的存儲區域。這將會成爲DRBD資源的底層資源,你能夠用任何類型的塊設備用於此存儲區域。
在兩個Host上執行下述操做,且保證分區大小一致:
a)新追加一個磁盤,在/dev/中可查看到是sdb
b)對sdb進行分區
# fdisk /dev/sdb
輸入n
輸入p
輸入分區號
輸入開始簇號
輸入+10G #####分區大小設定
輸入w #####保存
# partx /dev/sdb1 #####查看內核是否已經識別新分區,不識別須要從新啓動
Step 2. 配置網絡
建議使用專用的鏈接來運行DRBD,不推薦使用路由器是由於它明顯的影響了系統性能(包括吞吐量和延遲等形成等不良影響)。就防火牆而言,DRBD使用TCP端口從7788開始,而且每個資源監聽都使用一個獨立的端口,DRBD使用兩個TCP鏈接配置資源。爲了正常使用DRBD功能,這些鏈接須要能經過防火牆。
a) 設置主機名、以及 ip地址及主機名的對應關係。
在兩個Host上均執行下述操做:
/etc/hostname 中將Host1的主機名修改成node1.localdomain,將Host2的主機名修改成node2.localdomain。
將下列兩行追加到Host1和Host2的/etc/hosts 文件中:
193.160.11.30 node1.localdomain
193.160.11.107 node2.localdomain
最終保證,兩個Host之間能夠互相經過主機名ping通對方。
b)關閉防火牆或者設置防火牆容許端口7789。
方案1:關閉防火牆(安全性低)
CentOS7默認使用firewalld,則執行命令
#systemctl stop firewalld ,
若是已禁用firewalld而啓用了iptables,則執行 命令 #systemctl stop iptables
方案2:設置防火牆容許端口7789
firewalld:
Step1. 執行firewall-cmd --permanent --add-port=7789/tcp
Step2. systemctl restart firewalld
iptables:
Step1. 在/etc/sysconfig/iptables和/etc/sysconfig/ip6tables文件中找到22端口所在行下方添加與22端口行一致的數據,將—dport參數值更改成7789
Step2. systemctl restart iptables
Step 3. 配置DRBD資源
1. 編輯/etc/drbd.conf並添加下面內容
include "/etc/drbd.d/global_common.conf";
include "/etc/drbd.d/*.res";
通常/etc/drbd.d/global_common.conf 文件中包含有DRBD共同配置的部分,而.res文件則包含每個資源特有的部分。也有可能僅使用drbd.conf文件做爲配置文件。
2. 編輯/etc/drbd.d/global_common.conf文件,添加以下內容:
# sudo vim /etc/drbd.d/global_common.conf
global { usage-count yes; }
common {
protocol C;
handlers { }
startup {
wfc-timeout 300;
degr-wfc-timeout 300;
outdated-wfc-timeout 2000;
}
disk { on-io-error detach; }
net {
cram-hmac-alg "sha1";
shared-secret "vsm";
}
syncer { rate 100M; }
}
3. 編輯/etc/drbd.d/*.res文件,添加以下內容
# sudo vim /etc/drbd.d/*.res
resource r0 {
meta-disk internal;
device /dev/drbd0;
on node1.localdomain {
disk /dev/sdb1;
address 193.160.11.30:7789;
}
on node2.localdomain {
disk /dev/sdb1;
address 193.160.11.107:7789;
}
}
1.給兩個節點都建立DRBD設備並啓動資源
建立DRBD設備並啓動資源
# drbdadm create-md r0
# drbdadm up r0啓動DRBD服務
# service drbd start
查看DRBD狀態
方法一:#drbd-overview方法二:#cat /proc/drbd
2.將其中一個節點設置爲Primary
DRBD第一次設置主節點時,須要使用--force參數來初始化設備同步,以後切換節點則不在須要
#drbdadm primary r0
#drbd-overview0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent C r---n-
[=============>......] sync'ed: 70.6% (310268/1044092)K過一段時間後再次執行
#drbd-overview
0:r0 Connected Primary/Secondary UpToDate/UpToDate
3. 在Primary節點上格式化/dev/drbd0,掛載到指定目錄上,往該目錄寫入文件
# mkfs.ext4 /dev/drbd0
# cd /mnt
# mkdir test
# mount /dev/drbd0 /mnt/test
# echo 「This is a test.」 >> test.txt
4. 將Primary節點更改成Secondary節點
# umount /dev/drbd0 ####這一步很重要
# drbdadm secondary r0
5. 將Secondary節點更改成Primary節點
# drbdadm primary r0
# cd /mnt
# mkdir test
# mount /dev/drbd0 /mnt/test
6. 確認當前的Primary節點下mnt/test目錄下是否存在文件test.txt
# cd /mnt/test
錯誤一:啓用resource後,使用drbd-overview查看後狀態一直爲」 WFConnection Secondary/Unknown Inconsistent/DUnknown 」
A:防火牆不容許DRBD的端口號,能夠關閉防火牆,或者開放DRBD的端口號。
錯誤二:啓用resource後,使用drbd-overview查看後狀態一直爲」 WFConnection Secondary/Secondary Diskless/Diskless 」
A:底層存儲設置未檢測到,能夠執行命令:# drbdadm up r0
錯誤三:執行命令‘ #drbdadm secondary r0’報錯,錯誤信息 「0: State change failed : (-12) Device is held open by someone….」
A:在執行這個命令前必須執行# umount /dev/drbd0
錯誤四:執行格式化/dev/drbd0時出錯,錯誤信息爲 「「mkfs.ext3: Wrong medium type while trying to determine filesystem size「
A:執行命令所在節點不是Primary節點,先將其設置未Primary節點,再進行格式化/dev/drbd0
錯誤五:執行mount /dev/drbd0時出錯,錯誤信息爲 「mount: block device /dev/drbd0 is write-protected, mounting read-only mount: Wrong medium type「
A:執行命令所在節點不是Primary節點,先將其設置未Primary節點,再進行mount /dev/drbd0
錯誤六:執行[root@mysql1 ~]# drbdadm create-md r0 出現以下錯誤
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/sdb internal create-md' terminated with exit code 40
A:執行以下命令來zero out the device。
dd if=/dev/zero bs=1M count=1 of=/dev/sdb
而後在建立資源r0