您好,登錄后才能下訂單哦!
這篇文章主要介紹CentOS6.5中怎么安裝與配置drbd,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一、drbd概述
Distributed Replicated Block Device(DRBD)是一種基于軟件的,無共享,復制的存儲解決方案,在服務器之間的對塊設備(硬盤,分區,邏輯卷等)進行鏡像。
DRBD工作在內核當中的,類似于一種驅動模塊。DRBD工作的位置在文件系統的buffer cache和磁盤調度器之間,通過tcp/ip發給另外一臺主機到對方的tcp/ip最終發送給對方的drbd,再由對方的drbd存儲在本地對應磁盤 上,類似于一個網絡RAID-1功能。
在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣。本地(主節點)與遠程主機(備節點)的數據可以保 證實時同步。當本地系統出現故障時,遠程主機上還會保留有一份相同的數據,可以繼續使用。
DRBD的架構如下圖
底層設備支持
DRBD需要構建在底層設備之上,然后構建出一個塊設備出來。對于用戶來說,一個DRBD設備,就像是一塊物理的磁盤,可以在上面內創建文件系統。DRBD所支持的底層設備有以下這些類:
1、一個磁盤,或者是磁盤的某一個分區;
2、一個soft raid 設備;
3、一個LVM的邏輯卷;
4、一個EVMS(Enterprise Volume Management System,企業卷管理系統)的卷;
5、其他任何的塊設備。
DRBD復制模式
協議A:
異步復制協議。一旦本地磁盤寫入已經完成,數據包已在發送隊列中,則寫被認為是完成的。在一個節點發生故障時,可能發生數據丟失,因為被寫入到遠程節點上的數據可能仍在發送隊列。盡管,在故障轉移節點上的數據是一致的,但沒有及時更新。這通常是用于地理上分開的節點。
協議B:
內存同步(半同步)復制協議。一旦本地磁盤寫入已完成且復制數據包達到了對等節點則認為寫在主節點上被認為是完成的。數據丟失可能發生在參加的兩個節點同時故障的情況下,因為在傳輸中的數據可能不會被提交到磁盤。
協議C:
同步復制協議。只有在本地和遠程節點的磁盤已經確認了寫操作完成,寫才被認為完成。沒有任何數據丟失,所以這是一個群集節點的流行模式,但I / O吞吐量依賴于網絡帶寬。
一般使用協議C,但選擇C協議將影響流量,從而影響網絡時延。為了數據可靠性,我們在生產環境使用時須慎重選項使用哪一種協議。
二、drbd的安裝
1、準備工作
1)本配置共有兩個測試節點,分別node1.comratings.com和node2.comratings.com,相的IP地址分別為10.0.0.16和10.0.0.17,且解析寫到對應的/etc/hosts下面;
2)node1和node2兩個節點上各提供了一個大小相同的分區作為drbd設備;我們這里為在兩個節點上均為/dev/sda5,大小為512M;
3)系統為CentOS 6.5,x86_64平臺。
2、軟件包介紹
drbd共有兩部分組成:內核模塊和用戶空間的管理工具。其中drbd內核模塊代碼已經整合進Linux內核2.6.33以后的版本中,因此,如果您的內核版本高于此版本的話,你只需要安裝管理工具即可;否則,您需要同時安裝內核模塊和管理工具兩個軟件包,并且此兩者的版本號一定要保持對應。
目前適用CentOS 5的drbd版本主要有8.0、8.2、8.3三個版本,其對應的rpm包的名字分別為drbd, drbd82和drbd83,對應的內核模塊的名字分別為kmod-drbd, kmod-drbd82和kmod-drbd83。而適用于CentOS 6的版本為8.4,其對應的rpm包為drbd和drbd-kmdl,但在實際選用時,要切記兩點:drbd和drbd-kmdl的版本要對應;另一個是drbd-kmdl的版本要與當前系統的內容版本相對應。各版本的功能和配置等略有差異;我們實驗所用的平臺為x86_64且系統為CentOS 6.4,因此需要同時安裝內核模塊和管理工具。我們這里選用最新的8.4的版本(drbd-8.4.3-33.el6.x86_64.rpm和drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm),下載地址為ftp://rpmfind.net/linux/atrpms/,請按照需要下載。
實際使用中,您需要根據自己的系統平臺等下載符合您需要的軟件包版本,這里不提供各版本的下載地址。
3、軟件包安裝
下載完成后直接安裝即可:
# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm
三、配置drbd
1、配置文件介紹
drbd的主配置文件為/etc/drbd.conf;為了管理的便捷性,目前通常會將些配置文件分成多個部分,且都保存至/etc/drbd.d目錄中,主配置文件中僅使用"include"指令將這些配置文件片斷整合起來。通常,/etc/drbd.d目錄中的配置文件為global_common.conf和所有以.res結尾的文件。其中global_common.conf中主要定義global段和common段,而每一個.res的文件用于定義一個資源。
在配置文件中,global段僅能出現一次,且如果所有的配置信息都保存至同一個配置文件中而不分開為多個文件的話,global段必須位于配置文件的最開始處。目前global段中可以定義的參數僅有minor-count, dialog-refresh, disable-ip-verification和usage-count。
common段則用于定義被每一個資源默認繼承的參數,可以在資源定義中使用的參數都可以在common段中定義。實際應用中,common段并非必須,但建議將多個資源共享的參數定義為common段中的參數以降低配置文件的復雜度。
resource段則用于定義drbd資源,每個資源通常定義在一個單獨的位于/etc/drbd.d目錄中的以.res結尾的文件中。資源在定義時必須為其命名,名字可以由非空白的ASCII字符組成。每一個資源段的定義中至少要包含兩個host子段,以定義此資源關聯至的節點,其它參數均可以從common段或drbd的默認中進行繼承而無須定義。
以下是我的配置事例:
#cat /etc/drbd.d/global-common.conf
global { usage-count no; # minor-count dialog-refresh disable-ip-verification } common { protocol C; 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"; # fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; # split-brain "/usr/lib/drbd/notify-split-brain.sh root"; # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k"; # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh; } startup { #wfc-timeout 120; #degr-wfc-timeout 120; } disk { on-io-error detach; #fencing resource-only; } net { cram-hmac-alg "sha1"; shared-secret "mydrbd"; } syncer { rate 1000M; } }
2、定義一個資源/etc/drbd.d/web.res,內容如下:
resource web { on node1.comratings.com { device /dev/drbd0; disk /dev/sda5; address 10.0.0.16:7789; meta-disk internal; } on node2.comratings.com { device /dev/drbd0; disk /dev/sda5; address 10.0.0.17:7789; meta-disk internal; } }
注:以上配置在兩個節點上必須相同
四、drbd啟動和查看
1、初始化資源
在Node1和Node2上分別執行:
# drbdadm create-md web
2、啟動服務
在Node1和Node2上分別執行:
# service drbd start
3、查看啟動狀態
# cat /proc/drbd version: 8.3.8 (api:88/proto:86-94) GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:16 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r---- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:505964
也可以使用drbd-overview命令來查看:
# drbd-overview 0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----
從上面的信息中可以看出此時兩個節點均處于Secondary狀態。于是,我們接下來需要將其中一個節點設置為Primary。在要設置為Primary的節點上執行如下命令:
# drbdadm primary --force resource
注: 也可以在要設置為Primary的節點上使用如下命令來設置主節點:
# drbdadm -- --overwrite-data-of-peer primary web
而后再次查看狀態,可以發現數據同步過程已經開始:
# drbd-overview 0:web SyncSource Primary/Secondary UpToDate/Inconsistent C r---- [============>.......] sync'ed: 66.2% (172140/505964)K delay_probe: 35
等數據同步完成以后再次查看狀態,可以發現節點已經牌實時狀態,且節點已經有了主次:
# drbd-overview 0:web Connected Primary/Secondary UpToDate/UpToDate C r----
4、創建文件系統
文件系統的掛載只能在Primary節點進行,因此,也只有在設置了主節點后才能對drbd設備進行格式化:
# mke2fs -j -L DRBD /dev/drbd0 # mkdir /mnt/drbd # mount /dev/drbd0 /mnt/drbd
5、切換Primary和Secondary節點
對主Primary/Secondary模型的drbd服務來講,在某個時刻只能有一個節點為Primary,因此,要切換兩個節點的角色,只能在先將原有的Primary節點設置為Secondary后,才能原來的Secondary節點設置為Primary:
Node1:
# cp -r /etc/drbd.* /mnt/drbd # umount /mnt/drbd # drbdadm secondary web
查看狀態:
# drbd-overview 0:web Connected Secondary/Secondary UpToDate/UpToDate C r----
Node2:
# drbdadm primary web # drbd-overview 0:web Connected Primary/Secondary UpToDate/UpToDate C r---- # mkdir /mnt/drbd # mount /dev/drbd0 /mnt/drbd
使用下面的命令查看在此前在主節點上復制至此設備的文件是否存在:
# ls /mnt/drbd
以上是“CentOS6.5中怎么安裝與配置drbd”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。