drbd+apache+heartbeat

DRBD工作原理:

DRBD是一種塊設備,可以被用於高可用(HA)之中.它類似於一個網絡(磁盤陣列)RAID-1功能

當你將數據寫入本地 文件系統時DRBD Primary,數據還將會被髮送到網絡中另一臺主機上DRBD Secondary.以相同的形式記錄在一個文件系統中。本地(主節點)與遠程主機(備節點)的數據可以保證實時同步.當本地系統出現故障時,遠程主機上還會保留有一份相同的數據,可以繼續使用.在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣

因爲數據同時存在於本地主機和遠程主機上,切換時,遠程主機只要使用它上面的那份備份數據,就可以繼續進行服務了。

三種複製模式:

(1)協議A:異步複製

 一旦寫入本地完成,數據包就在buffer隊列中,則備認爲是完成的,在一個節點發生故障時,可能造成數據丟失,因爲被寫入遠程節點上的數據仍可能在發送隊列。一般用在地理位置比較遠的節點。

(2)協議B半同步複製

本地磁盤寫入並且已經完成複製數據包到達遠端,則認爲工作完成。不確定遠端是否寫入磁盤,這種情況下,當兩個節點同時發生故障就可能造成數據丟失,比如兩端同時掉電。

(3)協議C:同步複製

發送到遠端並確保寫入完成。沒有任何數據丟失,所以這是一個羣集節點的流行模式,但I / O吞吐量依賴於網絡帶寬

生產環境一般使用協議C,但選擇C協議將影響流量,從而影響網絡時延。爲了數據可靠性,我們在生產環境使用時須慎重選項使用哪一種協議

工作原理圖

 

DRBD是linux的內核的存儲層中的一個分佈式存儲系統,可用使用DRBD在兩臺Linux服務器之間共享塊設備,共享文件系統和數據

 wKioL1eOO-iC-2B2AAE_qaJQXgk092.png-wh_50

 

 

實驗環境:

節點1server1.example.com  172.25.29.1

節點2server2.example.com  172.25.29.2

Vip172.25.29.100

Selinuxiptables處於disabled狀態

以上兩臺虛擬主機爲redhat 6.5版本

一.安裝

Server1

得到drbd-8.4.2.tar.gz

yum install rpm-build -y   ###安裝rpm-build

tar zxf drbd-8.4.2.tar.gz    ###解壓

cd drbd-8.4.2  ###進入解壓後目錄

 

 ./configure --enable-spec   --with-km(內核編譯)   ###編譯

編譯的過程中根據報錯提示安裝gcc  flex  

安裝完成後需要重新編譯

wKioL1eOPBGwRKhbAAB-HsmRnXo067.png-wh_50

編譯完成後生成三個文件  drbd.spec drbd-km.spec drbd-kernel.spec

 

 

wKiom1eOPDuysFz-AAB6WizRlY0261.png-wh_50






 

 rpmbuild -bb drbd.spec   ###編譯後做成*.rpm

根據錯誤提示把未解壓的包拷貝到指定目錄下

重新編譯

 

wKiom1eOPDzQ4en8AAFQ64VquKw535.png-wh_50


 

信息提示生成的rpm包的位置爲/root/rpmbuild/RPMS/x86_64

 

wKioL1eOPD2gj_i-AACGf9-Xcm8851.png-wh_50


 

[root@server1 x86_64]# rpm -ivh *   ###安裝

 scp  *  [email protected]:/drbd   ###server2只需要rpm -ivh *安裝

  

二.配置

Server1

[root@server1 x86_64]# cat /etc/drbd.conf 

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

 

include "drbd.d/global_common.conf";

include "drbd.d/*.res";       ###配置文件都是以res結尾

 

 

兩臺虛擬機都添加4G虛擬硬盤,fdisk -l 查看名稱我這裏是/dev/vda   兩塊硬盤一樣大

 

cd /etc/drbd.d   

vim example.res   ###這個文件原本不存在,自己建立

 

 

resource example {

meta-disk internal;

device /dev/drbd1;   ###設備/dev/drbd1,名稱必須是drbd*

syncer {

verify-alg sha1;

}

on server1.example.com {

disk  /dev/vda;    ###硬盤名稱

address 172.25.29.1:7789;

}

on server2.example.com {

disk /dev/vda;

address 172.25.29.2:7789;

}

}

[root@server1 drbd.d]# scp example.res  [email protected]:/etc/drbd.d

 

遠程複製到server2 

工作方式爲主備模式

 

三.初始化並載入數據

wKioL1eOPD3CqQZ3AAB2W6VH-G8440.png-wh_50


 

wKiom1eOPPSB9uJ4AAGbft8zClg809.png-wh_50

服務啓動失敗,需要加載內核模塊,進入到解壓目錄,rpmbuild命令編譯成rpm包,安裝kernel-devel後需要重新編譯生成rpm

 

進入生成rpm包的目錄/root/rpmbuild/RPMS/x86_64,安裝與內核相關的包:

wKiom1eOPRrRQDv2AACmXw4Ko0s262.png-wh_50

 

 

[root@server1 x86_64]# scp drbd-km-2.6.32_431.el6.x86_64-8.4.2-2.el6.x86_64.rpm [email protected]:/root

 

server2中也安裝此包

wKiom1eOPfbADfOaAABiBP6EmVw174.png-wh_50

 

安裝完這個包後,就可以成功開啓服務/etc/init.d/drbd  start

注意:兩邊都要開啓服務,否則先開啓服務的那一個主機會等待另一個主機開啓服務,一直等待,直到另外一個主機開啓服務爲止

 

wKioL1eOPg7jtYBrAACOnHRNNJc444.png-wh_50

 

兩個之間還,沒有建立連接inconsistent

 

Server1

 drbdadm primary example --force    ####server1設置爲primary    進行數據的同步

 

wKiom1eOPl3CxwaFAAC1NIp3Qpo430.png-wh_50

Primary/Secondary   ###Primary在前就表示自己是主設備

上面的圖片表示server2是從設備;update已經建立連接

 

 

/dev/vda   ---> /dev/drbd1

[root@server1 x86_64]# mkfs.ext4 /dev/drbd1   ###只能對/dev/drbd1 進行操作

 

四.掛載測試

格式化完成後,在server1中將/dev/drbd1掛載到/mnt目錄下可以掛載

wKiom1eOPl6B2KHuAABxAVxZxIU777.png-wh_50


卸載之後,server2還是掛載不上

wKioL1eOPl6yseL4AADE9hQzHxs454.png-wh_50


 現象:主設備server1掛載再卸載,但是server2設備還是掛載失敗

因爲server2是從設備,只能在主設備上進行掛載

 

[root@server1 ~]# drbdadm  secondary example   ###server1改成從設備

[root@server2 ~]# drbdadm  primary example     ###server2改成主設備

然後就可以在server2上實現掛載

                                               

wKiom1eOPl-AAklVAADE7yjk_4E531.png-wh_50


 

 

Server1 : 

Server2:備

Server1echo  c > /proc/sysrq-trigger  ###內核崩掉

 

Drbd-overciew  ###查看是否連接還是等待連接

 

Forceoff 重啓之後正常連接

wKioL1eOPmDgfHjmAACRPJocals499.png-wh_50


 

Server1stop network 出現如上現象獨立工作

Server2在等待

 

 

 

Server2drbdadm disconnect example  ###斷開連接

Drbdadm  connect  --discard-my-data example ###重新連接

 

Server1drbdadm connect example

五.drbd掛載到httpd默認發佈目錄上(drbd+heartbeat

Server1.server2

 

/etc/init.d/heartbeat   stop

 

Vim /etc/ha.d/haresources

wKioL1eOPmGQ5ixUAAAvV_37l5U026.png-wh_50

參數說明:

server1.example.com    ###主節點,兩邊都是主節點的主機名

IPaddr::172.25.29.100/24/eth0   ###vip

drbddisk::example  ###因爲只有primary才能掛載,轉換身份爲primary

Filesystem::/dev/drbd1::/var/www/html   

Httpd   ###服務

 

 

/etc/init.d/heartbeat   start  ###兩邊都開啓服務

 

當前server1primary,所以先掛載到server1

Cd /var/www/html    cat index.html    linux ###創建測試頁

 

wKiom1eOPmLjKbPlAAFzSVYDoOA151.png-wh_50


 

 

[root@server1 ha.d]# /etc/init.d/heartbeat  stop    ##server1上停止心跳服務

 

就會自動掛載到server2

Server1服務恢復時,又會自動掛載到server1(主從設備)

 

srver1httpd服務停止,掛載位置不變,curl  172.25.29.100   沒有內容

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章