DRBD+Heartbeat+NFS配置高可用性網絡html
一.DRBD簡介
分佈式複製塊設備(DRBD技術)是一種基於軟件的,無共享,複製的存儲解決方案,在服務器之間的對塊設備(硬盤,分區,邏輯卷等)進行鏡像。
DRBD鏡像數據具備實時性,透明性與同步鏡像和異步鏡像等特色
DRBD的兩種模式,單主模式與雙主模式
1.單主模式是不論任何資源在任何特定的時間,集羣之中只存在一個主節點,而且只能在主模式下操做數據,這個模式能夠在任何文件系統中使用。
2.雙主模式是在DRBD8.0以後才加入的新特性,它是在集羣中有兩個主節點,這種模式須要一個集羣文件系統,利用分佈工的鎖機制進行管理,如:GFS和OCFS2
DRBD提供了三種複製方式,咱們先看下DRBD在LINUX的I/0堆棧中的位置
1.協議A:本地磁盤寫入成功,數據包已在發送隊列中,就被認爲是完成操做,通俗點講就是在主節點寫入已經成功後,可是數據包還在發送隊列中,並無到達備用節點,就被主節點認爲是完成了所有的讀寫操做,顯然可能在備用節點若是發生故障時,並無收到數據包,主節點也認爲數據已經發送成功,顯然不合理,這種主要用在地理上分開的節點!
簡言之:數據一旦寫入磁盤併發送到網絡中就認爲完成了寫入操做
2.協議B:本地磁盤已寫入完成且複製數據包達到了對等節點,則被認爲是完成操做。可是若是在節點往磁盤寫數據時時候,發生故障的話,數據仍是不能在對等節點上寫入磁盤成功。
簡言之:收到接收確認就認爲完成了寫入操做
3.協議C:在本地和遠程節點的磁盤都已經確認了寫入操做完成才被認爲操做完成。這是羣集節點的流行模式,但I/0吞吐量依賴於網絡帶寬。
簡言之:收到必定程度確認才認爲完成寫入操做
二.實例
1.拓撲圖
2.實驗要求
本實驗使用Heartbeat,NFS與DRBD技術來實現兩個節點之間的數據的同步,而且經過Heardbeat實現故障轉移,保證服務的不間斷!
3.IP地址配置
按照拓撲圖的規劃,對IP地址進行配置
4.DRBD配置
節點一:drbd1.a.com
1> 修改主機名
[root@localhost ~]# vim /etc/sysconfig/network 主機名修改以下
HOSTNAME=drbd1.a.com
[root@localhost ~]# hostname drbd1.a.com 不用註銷,從新登陸便可修改
2> 同步系統時間RTC
[root@drbd1 ~]# hwclock -s
3> 配置服務器可相互解析
[root@drbd1 ~]# vim /etc/hosts 添加以下內容
192.168.2.10 drbd1.a.com
192.168.2.20 drbd2.a.com
4> 安裝DRBD軟件
[root@drbd1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm //主文件安裝
[root@drbd1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm //內核文件安裝
5> 加載內核
[root@drbd1 ~]# modprobe drbd
6> 配置主文件
[root@drbd1 ~]# vim /etc/drbd.conf 在末行模式下輸入以下命令
將獲得以下內容
7> 建立一個共享空間
8> 配置全局文件
[root@drbd1 ~]# cd /etc/drbd.d
[root@drbd1 drbd.d]# cp global_common.conf global_common.conf.bak //備份文件
[root@drbd1 drbd.d]# vim global_common.conf 修改以下
global {
usage-count no; //取消DRBD使用者統計
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C; //使用協議C
startup {
wfc-timeout 120; //啓動延遲
degr-wfc-timeout 120;
}
disk { //fence防腦裂
on-io-error detach;
fencing resource-only;
}
net {
cram-hmac-alg "sha1"; //主備節點使用的通訊算法
shared-secret "mydrbdlab";
}
syncer {
rate 100M; //主備節點同步速率
}
}
9> 定義資源
[root@drbd1 ~]# vim web.res
節點二:drbd2.a.com配置
1> 修改主機名
[root@localhost ~]# vim /etc/sysconfig/network 主機名修改以下
HOSTNAME=drbd2.a.com
[root@localhost ~]# hostname drbd2.a.com 不用註銷,從新登陸便可修改
2> 同步系統時間RTC
[root@drbd12~]# hwclock -s
3> 配置服務器可相互解析
[root@drbd1 ~]# vim /etc/hosts 添加以下內容
192.168.2.10 drbd1.a.com
192.168.2.20 drbd2.a.com
4> 安裝DRBD軟件
[root@drbd2 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm //主文件安裝
[root@drbd2 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm //內核文件安裝
5> 加載內核
[root@drbd2 ~]# modprobe drbd
6> 配置主文件
[root@drbd2 ~]# vim /etc/drbd.conf 在末行模式下輸入以下命令
將獲得以下內容
7> 建立一個共享空間
8> 配置全局文件
[root@drbd2 ~]# cd /etc/drbd.d
[root@drbd2 drbd.d]# cp global_common.conf global_common.conf.bak //備份文件
[root@drbd2 drbd.d]# vim global_common.conf 修改以下
global {
usage-count no; //取消DRBD使用者統計
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C; //使用協議C
startup {
wfc-timeout 120; //啓動延遲
degr-wfc-timeout 120;
}
disk { //fence防腦裂
on-io-error detach;
fencing resource-only;
}
net {
cram-hmac-alg "sha1"; //主備節點使用的通訊算法
shared-secret "mydrbdlab";
}
syncer {
rate 100M; //主備節點同步速率
}
}
9> 定義資源
[root@drbd1 ~]# vim web.res
5.在節點1 與節點2上初始化資源web
[root@drbd1 ~]# drbdadm create-md web
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
[root@drbd2 ~]# drbdadm create-md web
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
6.啓動drbd服務
注意兩個節點要一塊兒啓動,不然在啓動時會處於一直等待狀態
[root@drbd1 ~]# service drbd start
[root@drbd2 ~]# service drbd start
7.查看節點狀態
在節點一上查看
[root@drbd1 ~]# drbd-overview
0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----
在節點二上查看
[root@drbd2 ~]# drbd-overview
0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----
web:資源名
Secondary/Secondary:自身狀態/另外節點狀態
由上面的兩個節點的狀態可看到,兩個節點都是備用節點,咱們須要手動調整
8.將drbd1.a.com調整爲主節點
[root@drbd1 ~]# drbdadm -- --overwrite-data-of-peer primary web
9.再次查看狀態
節點一
[root@drbd1 ~]# drbd-overview
0:web Connected Primary/Secondary UpToDate/UpToDate C r----
節點二
[root@drbd2 ~]# drbd-overview
0:web Connected Secondary/Primary UpToDate/UpToDate C r----
能夠看出drbd1.a.com已經成爲主節點了
10.在主節點上建立文件系統
[root@drbd1 ~]# mkfs.ext3 -L drbdweb /dev/drbd0 L:卷名
11.測試
1> 在主節點上建立掛載點,掛載後,寫入一個文件
[root@drbd1 ~]# mkdir /mnt/drbd
[root@drbd1 ~]# mount /dev/drbd0 /mnt/drbd
[root@drbd1 ~]# cd /mnt/drbd
[root@drbd1 drbd]# touch index.html
[root@drbd1 drbd]# ll
total 16
-rw-r--r-- 1 root root 0 Jan 20 18:09 index.html
drwx------ 2 root root 16384 Jan 20 18:07 lost+found
[root@drbd1 drbd]#
2> 將drbd1.a.com配置成從節點,將drbd2.a.com配置成主節點
節點一
[root@drbd1 drbd]# cd
[root@drbd1 ~]#
[root@drbd1 ~]# umount /mnt/drbd
[root@drbd1 ~]# drbdadm secondary web
[root@drbd1 ~]# drbdadm role web
Secondary/Primary
[root@drbd1 ~]#
節點二
[root@drbd2 ~]# drbdadm primary web
[root@drbd2 ~]# drbd-overview
0:web Connected Primary/Secondary UpToDate/UpToDate C r----
3> 在節點二掛載,查看是否有內容
[root@drbd2 ~]# mkdir /mnt/drbd
[root@drbd2 ~]# mount /dev/drbd0 /mnt/drbd
[root@drbd2 ~]# ll /mnt/drbd/
total 16
-rw-r--r-- 1 root root 0 Jan 20 18:09 index.html //能夠看到已經寫入成功
drwx------ 2 root root 16384 Jan 20 18:07 lost+found