廢話不多說,現在開始:
1.2台虛拟機,Centos6.5系統,系統配置啥的都一樣,能互相ping 通。把它們稱為A和B。
2. A: server iptables stop
setenforce 1 //先把這2台伺服器的防火牆和SELINUX關閉。
-------------------------------------------
B: server iptables stop
3. vim /etc/hosts
192.168.1.170 drbd1.com
192.168.1.171 drbd2.com //這一步挺重要,統一主機名字,後面就看出來了。
4.把2台虛拟機分别添加一塊硬碟:
fdisk -l /dev/sdb --->n-----> p---->1----->回車-----> w 儲存。到現在為止,就可以了,不要急着格式化。
5. A 和 B 時間要同步一下
# ntpdate -u asia.pool.ntp.org
目前為止,準備工作都準備好了,現在接下來迎接客人------DRBD。
a. 安裝依賴包(A和B都安裝)
#yum install gcc gcc-c++ make glibc flex kernel-devel kernel-headers
b. 安裝drbd包
# tar -zxvf drbd-8.4.3.tar.gz
# cd drbd-8.4.3
#./configure --prefix=/usr/local/drbd --with-km 這步是安裝路徑
# make KDIR=/usr/src/kernels/`uname -r` 把你系統的核心安裝好
# 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/ 把指令cp過去
加載DRBD子產品是否加載到核心
#modprobe drbd
檢視DRB子產品是否加載到核心:
# lsmod|grep drbd 看一下是否有類似圖檔中的東西出現
到現在為止,完成一半了,接下來把配置檔案配置一下就好了。
#vim /usr/local/drbd/etc/drbd.conf 打開這個檔案以後,預設有紅色的2行文字,不用管它,全部删除即可。我們重新配置它。這個檔案裡的内容,可以分成2個檔案配置,也可以在一個檔案裡配置,我這裡在一個檔案裡配置,功能相同,沒有任何影響,完全可以。
resource r0{ #資源名字為r0
protocol C; #使用DRBD第3種協定,表示遠端主機的寫入确認後,認為寫入完成。
startup { wfc-timeout 0; degr-wfc-timeout 120;}
disk { on-io-error detach;} #保證資料在不同步時不進行切換
net{
timeout 60;
connect-int 10;
ping-int 10;
max-buffers 2048;
max-epoch-size 2048;
}
syncer { rate 200M;} #主用節點和備用節點同步時的網絡速率最大值
on drbd1.com{ # drbd1.com是主機名,前面改過了,on 這個字母必須加
device /dev/drbd0;
disk /dev/sdb1; # /dev/drbd0 使用的磁盤分區是/dev/sdb1.
address 192.168.1.170:7798; #設定DRBD的監聽端口
meta-disk internal; #DRBD的中繼資料存放方式。
on drbd2.com{
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.171:7798;
meta-disk internal;
現在配置完畢。
1) 把drbd.conf 放到A 和B 的/usr/local/drbd/etc/底下,2台伺服器的配置一模一樣。
啟動DRBD:
A:# drbdadm create-md r0 (我寫的這個指令絕對可以,還有一些其他指令和這個指令作用一樣,别管别的指令了)
# drbdadm create-md r0 你沒看錯,執行2遍這個指令,第一遍是建立DRBD記錄資訊的資料塊,第2遍是激活r0.
B:# drbdadm create-md r0
# drbdadm create-md r0
2) A:service drbd start
B:service drbd start 在2台伺服器上分别執行這個指令,最好同時進行,我覺的同時進行非常重要!
3) cat /proc/drbd 分别在A和B上執行這個指令,看是否和下面的一樣,如果2台都是Secondary 就對了。紅色代表是都是備用狀态,紫色是資料不一緻。
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 2016-01-12 22:16:34
m:res cs ro ds p mounted fstype
0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C
4) 将A主機配置為主節點:
A: # drbdsetup /dev/drbd0 primary -- force
目前為止,分别在A和B上看一下狀态。
A伺服器:: # service drbd status
drbd driver loaded OK; device status:
0:r0 Connected Primary/Secondary Inconsistent/Inconsistent C
B伺服器: # service drbd status
drbd driver loaded OK; device status:
0:r0 Connected Secondary/Primary Inconsistent/Inconsistent C
ro在主從伺服器上分别顯示 Primary/Secondary和Secondary/Primary
ds顯示UpToDate/UpToDate
A伺服器上挂載DRBD
# mkfs.ext4 /dev/drbd0
# mount /dev/drbd0 /mnt
現在為止,全部OK
注意:Secondary節點上不允許對DRBD裝置進行任何操作,包括隻讀。
隻有當Primary節點挂掉時,Secondary節點才能提升為Primary.
DRBD(Distributed Replicated Block Device),相當于一個RAID1.2台伺服器一台用于寫,讀資料,另一台負責複制。
ro: 表示角色資訊,第一次啟動,兩個drbd節點預設都是Secondary狀态。
ds: 表示磁盤資訊 , “Inconsistent/Inconsistent”表示 “不一緻/不一緻”狀态。
ns: 表示網絡發送的資料包資訊。
dw: 表示磁盤寫資訊
dr: 表示磁盤讀資訊
模拟故障:
A伺服器故障,手動切換到B伺服器
A 伺服器: # cd /mnt
# touch 111111
# cd ..
# umount /mnt
# drbdsetup /dev/drbd0 secondary 這裡把drbd轉換為secondary狀态
在實際生産環境中,若A伺服器當機了,B伺服器的狀态是 Secondary/Unknown,此時,直接對
drbd進行提權操作即可。
B伺服器: # drbdsetup /dev/drbd0 primary
# mount /dev/drbd0 /mnt
# cd /mnt
# touch 222222
#ls
111111 222222
# service drbd status
drbd driver loaded OK; device status:
0:r0 Connected Primary/Secondary UpToDate/UpToDate C /mnt ext4
這個時候手動切換就完成了。
如果想主從智能切換,實作高可用,就需要用到Heartbeat。
會在主端當機的情況下,自動切換到從端,并把從端變為主端,并實作自動挂載。
本文轉自 曾國藩_6868 51CTO部落格,原文連結:http://blog.51cto.com/8184069/1734684