DRBD編譯安裝配置

來源:互聯網
上載者:User

標籤:伺服器   作業系統   可靠性   本地磁碟   drbd 同步 解決方案   

一、簡介   

650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/1C/wKiom1Yy2engqFyZAABNdBRd5XE057.gif" title="20151030104525.gif" alt="wKiom1Yy2engqFyZAABNdBRd5XE057.gif" />

    DRBD的全稱為:Distributed ReplicatedBlock Device(DRBD)分布式塊裝置複製,DRBD 是由核心模組和相關指令碼而構成,用以構建高可用性的叢集。其實現方式是通過網路來鏡像整個裝置。它允許使用者在遠程機器上建立一個本地塊裝置的即時鏡像。與心跳串連結合使用,也可以把它看作是一種網路RAID。

    DRBD是一個用軟體實現的、無共用的、伺服器之間鏡像塊裝置內容的儲存複製解決方案。 DRBD Logo資料鏡像:即時、透明、同步(所有伺服器都成功後返回)、非同步(本機伺服器成功後返回)。DBRD的核心功能通過Linux的核心實現,最接近系統的IO棧,但它不能神奇地添加上層的功能比如檢測到EXT檔案系統的崩潰。DBRD的位置處於檔案系統以下,比檔案系統更加靠近作業系統核心及IO棧。


二、工作模式及協議

①工作模式

單主模式:典型的高可靠性叢集方案。DRBD負責接收資料,把資料寫到本地磁碟,然後發送給另一個主機,另一個主機再將資料存到自己的磁碟中。

複主模式:需要採用共用cluster檔案系統,如GFS和OCFS2。用於需要從2個節點並發訪問資料的場合,需要特別配置。


②複製協議

協議A:非同步複製協議。本地寫成功後立即返回,資料放在發送buffer中,可能丟失。

協議B:記憶體同步(半同步)複製協議。本地寫成功並將資料發送到對方後立即返回,如果雙機掉電,資料可能丟失。

協議C:同步複製協議。本地和對方寫成功確認後返回。如果雙機掉電或磁碟同時損壞,則資料可能丟失。

一般用協議C。選擇協議將影響流量,從而影響網路時延。



三、安裝依賴並編譯drbd

①安裝相關程式

# yum -y install gcc make automake autoconf kernel-devel kernel-headers flex libxslt libxslt-devel asciidoc# wget http://oss.linbit.com/drbd/9.0/drbd-9.0.0.tar.gz # wget http://oss.linbit.com/drbd/drbd-utils-8.9.4.tar.gz # getenforce 0# systemctl stop firewalld

注:安裝kernel-devel一定要和uname -r看到的核心版本一致.


②編譯drbd-utils

# tar -zxvf drbd-utils-8.9.4.tar.gz# cd drbd-utils-8.9.4# ./autogen.sh# ./configure --prefix=/usr/ --localstatedir=/var --sysconfdir=/etc# make KDIR=/usr/src/kernels/3.10.0-229.14.1.el7.x86_64# make install# cp drbd-utils-8.9.4/scripts/drbd /etc/init.d/     ##複製啟動指令碼


③編譯drbd

# tar -zxvf drbd-9.0.0.tar.gz# cd drbd-9.0.0# make KDIR=/usr/src/kernels/3.10.0-229.14.1.el7.x86_64# make install# make -C drbd install


④安裝drbd模組

# cd drbd-9.0.0/drbd# cp drbd.ko /lib/modules/3.10.0-229.el7.x86_64/kernel/lib/# cp drbd_transport_tcp.ko /lib/modules/3.10.0-229.el7.x86_64/kernel/lib/# depmod                      ##更新核心包關聯檔案# modprobe drbd                ##安裝核心模組# modprobe drbd_transport_tcp# lsmod |grep drbd           ##查看模組是否載入成功drbd                  463948  0 libcrc32c              12644  2 xfs,drbd# lsmod|grep drbd_transport_tcpdrbd_transport_tcp     17731  0 drbd                  463948  2 drbd_transport_tcp


⑤查看drbd版本及路徑

# cat /proc/drbd                                         ##查看版本資訊version: 9.0.0 (api:2/proto:86-110)GIT-hash: e0e3bc833053a0ed6b4b593b32e40223a9373fb7 build by [email protected], 2015-10-29 19:16:18Transports (api:8): tcp (1.0.0)# whereis drbd                         ##查看drbd安裝路徑drbd: /usr/lib/drbd /etc/drbd.conf /etc/drbd.d /usr/share/man/man8/drbd.8


四、添加新磁碟並分區

# fdisk -l# fdisk /dev/sdb歡迎使用 fdisk (util-linux 2.23.2)。更改將停留在記憶體中,直到您決定將更改寫入磁碟。使用寫入命令前請三思。Device does not contain a recognized partition table使用磁碟標識符 0xd9a29d5a 建立新的 DOS 磁碟標籤。命令(輸入 m 擷取協助):nPartition type:   p   primary (0 primary, 0 extended, 4 free)   e   extendedSelect (default p): Using default response p分區號 (1-4,預設 1):起始 扇區 (2048-2097151,預設為 2048):將使用預設值 2048Last 扇區, +扇區 or +size{K,M,G} (2048-2097151,預設為 2097151):+300M分區 1 已設定為 Linux 類型,大小設為 300 MiB命令(輸入 m 擷取協助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁碟。# fdisk -l


五、配置drbd

①主設定檔drbd.conf

# cat /etc/drbd.conf             ##查看drbd的主設定檔# You can find an example in  /usr/share/doc/drbd.../drbd.conf.exampleinclude "drbd.d/global_common.conf";include "drbd.d/*.res";


②配置global_common.conf

# cat /etc/drbd.d/global_common.conf|grep -v "#" global {usage-count no;       ##是否參加drbd的使用者統計,預設此選項為YES}common {handlers {}startup {}options {}disk {}net {}}


③建立資源設定檔:

a.定義資源檔

# vi /etc/drbd.d/drbd.res                      ##建立資源設定檔為drbd.resresource r1 {                                ##定義資源群組名稱為r1         net {               cram-hmac-alg sha1;             ##使用sha1加密               shared-secret "123456";           ##產生加密金鑰         }         volume 1 {                          ##定義卷組               device    /dev/drbd1;        ##邏輯裝置路徑(建立塊裝置)               disk      /dev/sdb1;        ##物理裝置路徑(用於複製的分區)               meta-disk internal;        ##meta data資訊存放的方式,該處為內部儲存,即和真實資料放在一起儲存         }          on node1 {                    ##on開頭,後面是主機名稱(需與uname -n相同)               node-id    0;               address    192.168.10.132:7000;      ##設定drbd監聽地址和連接埠          }          on node2 {               node-id    1;               address    192.168.10.133:7000;          }          connection {               host node1  port 7000;               host node2  port 7000;               net {                       protocol C;              ##使用drbd的第三種同步協議,表示收到對方主機寫入確認後,則認為寫入完成               }          }}

b.配置resource

# dd if=/dev/zero of=/dev/sdb1 bs=1M count=100          ##用指定大小的塊拷貝一個檔案# drbdadm -c /etc/drbd.conf create-md all        ##建立裝置中繼資料initializing activity logNOT initializing bitmapWriting meta data...New drbd meta data block successfully created.success


# drbdadm create-md r1                   ##建立r1裝置元(注:使用上命令,則該命令非必須)You want me to create a v09 style flexible-size internal meta data block.There appears to be a v09 flexible-size internal meta data blockalready in place on /dev/sdb1 at byte offset 314568704Do you really want to overwrite the existing meta-data?[need to type ‘yes‘ to confirm] yesinitializing activity logNOT initializing bitmapWriting meta data...New drbd meta data block successfully created.


# drbdadm up r1                     ##啟用該資源Device ‘1‘ is configured!Command ‘drbdmeta 1 v09 /dev/sdb1 internal apply-al‘ terminated with exit code 20
# drbd-overview                        ##查看狀態 1:r1/0  Connected(1*) Secondary(1*) Inconsistent(1*)


六、drbd同步測試


①配置primary node

設定node1為primary node: 

# drbdadm primary r1# drbd-overview  1:r1/1  Connected(2*) Primar/Second UpToDa/UpToDa

node2狀態:

# drbd-overview  1:r1/1  Connected(2*) Second/Primar UpToDa/UpToDa

格式化並掛載(node1):

# mkdir /drbd # mkfs.ext4 /dev/drbd1                ##格式化/dev/drbd1# mount /dev/drbd1 /drbd                ##掛載# drbd-overview                    ##查看狀態 1:r1/1  Connected(2*) Primar/Second UpToDa/UpToDa /drbd ext4 283M 2.1M 262M 1%


②進行同步測試

node1:

在node1下的掛載點/drbd寫入一些資料

# umount /dev/drbd1                          ##卸載/dev/drbd1# drbdadm secondary r1                        ##將主節點降級為備節點# drbd-overview                        1:r1/1  Connected(2*) Secondary(2*) UpToDa/UpToDa

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/75/21/wKioL1YzL2nyBhsPAAGuwZIPHt4728.jpg" title="QQ圖片20151030164918.png" alt="wKioL1YzL2nyBhsPAAGuwZIPHt4728.jpg" />

node2:

# mount /dev/drbd1 /drbd                       ##掛載裝置# drbdadm primary r1                         ##將node2升級為主節點# drbd-overview  1:r1/1  Connected(2*) Primar/Second UpToDa/UpToDa /drbd ext4 283M 3.2M 261M 2%

 650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/75/24/wKiom1YzMiLRGHlJAAFQxKSoRy8441.jpg" title="QQ圖片20151030170145.png" alt="wKiom1YzMiLRGHlJAAFQxKSoRy8441.jpg" />

已實現同步!


附:

# drbdadm role r1                   ##查看節點狀態Secondary
# drbdadm dstate r1               ##查看硬碟狀態

本地和對等節點的硬碟可能為下列狀態之一:

diskless(無盤):本地沒有塊裝置分配給DRBD使用,表示無可用裝置,或是使用drbdadm命令手工分離;

                或是底層的I/O錯誤導致自動分離。

attaching:讀取無資料時的瞬間狀態。

failed(失敗):本地塊裝置報告I/O錯誤的下一個狀態,其下一個狀態為diskless無盤。

negotiating:在已串連的DRBD設定進行attach讀取無資料前的瞬間狀態。

inconsistent:資料不一致,在兩個節點上(初始的完全同步前)這種狀態出現後立即建立一個新的資源。

outdated:資料資源一致,但已淘汰。

dunknown:當對等節點網路連接不可用時會出現該狀態

consistent:一個沒有串連的節點資料一致,當建立串連時,它決定資料是uptodate或outdated

uptodate:一致的最新的資料狀態,為正常狀態


本文出自 “記事本” 部落格,請務必保留此出處http://wangzhijian.blog.51cto.com/6427016/1710926

DRBD編譯安裝配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.