自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

生產(chǎn)環(huán)境下的高可用NFS文件服務器

原創(chuàng)
網(wǎng)絡 網(wǎng)絡優(yōu)化 網(wǎng)絡運維
分布式復制塊設備(DRBD,Distributed Replicated Block Device)是一種基于Linux的軟件組件, 它是由內(nèi)核模塊和相關程序而組成的,通過網(wǎng)絡鏡像促進共享存儲系統(tǒng)的替換。也就是說: 當你將數(shù)據(jù)寫入本地的DRBD設備上的文件系統(tǒng)時,數(shù)據(jù)會同時被發(fā)送到網(wǎng)絡中的另外一臺主機之上,并以完全相同的形式記錄在一個文件系統(tǒng)中(實際上文件系統(tǒng)的創(chuàng)建也是由DRBD的同步來實現(xiàn)的)。本地節(jié)點(主機)與遠程節(jié)點(主機)的數(shù)據(jù)可以保證 實時的同步,并保證IO的一致性。所以當本地節(jié)點的主機出現(xiàn)故障時,遠程節(jié)點的主機上還會保留有一份完全相同的數(shù)..

【51CTO.com獨家特稿】一、DRBD簡介

分布式復制塊設備(DRBD,Distributed Replicated Block Device)是一種基于Linux的軟件組件, 它是由內(nèi)核模塊和相關程序而組成的,通過網(wǎng)絡鏡像促進共享存儲系統(tǒng)的替換。也就是說: 當你將數(shù)據(jù)寫入本地的DRBD設備上的文件系統(tǒng)時,數(shù)據(jù)會同時被發(fā)送到網(wǎng)絡中的另外一臺主機之上,并以完全相同的形式記錄在一個文件系統(tǒng)中(實際上文件系統(tǒng)的創(chuàng)建也是由DRBD的同步來實現(xiàn)的)。本地節(jié)點(主機)與遠程節(jié)點(主機)的數(shù)據(jù)可以保證 實時的同步,并保證IO的一致性。所以當本地節(jié)點的主機出現(xiàn)故障時,遠程節(jié)點的主機上還會保留有一份完全相同的數(shù)據(jù),可以繼續(xù)使用,以達到高可用的目的。

在高可用(HA)解決方案中使用DRBD的功能,可以代替使用一個共享盤陣存儲設備。因為數(shù)據(jù)同時存在于本地主機和遠程主機上,在遇到需要切換的時候,遠程主機只需要使用它上面的那份備份數(shù)據(jù),就可以繼續(xù)提供服務

分布式復制塊設備(DRBD)是在90年代末由Philipp Reisner和Lars Ellenberg設想和開發(fā)的。開發(fā)者是為了創(chuàng)建一個Linux安全標準,以最低成本提供最佳的安全保障。分布式復制塊設備的當前版本可以與Linux 的普通版本一起使用,用于在被動系統(tǒng)和主動系統(tǒng)之間進行存儲數(shù)據(jù)的同步復制。數(shù)據(jù)可以在兩個系統(tǒng)同時讀取和輸入。分布式復制塊設備還支持資源級別防護。分布式復制塊設備(DRBD)工程與一組稱為Heartbeat的管理程序一起使用。它已經(jīng)被收集到Linux的一些發(fā)行版中,目前流行的Linux中只有Centos有預編譯好的安裝包和對應內(nèi)核。

分布式復制塊設備(DRBD)是LINBIT信息技術(shù)有限責任公司的一個注冊商標,總部設在奧地利維也納。該軟件已通過通用公共許可證(GNU GPL)發(fā)布,它可以在許可協(xié)議允許的范圍內(nèi)自由分發(fā)和修改。#p#

二、DRBD的工作原理

 

理解DRBD其實就是網(wǎng)絡RAID-1,二臺服務器中就算其中的某臺因電源或主板損壞而宕機而對數(shù)據(jù)無任何影響(可以用硬盤RAID-1來理解DRBD),而真正的熱切換可以通過Heartbeat來實現(xiàn),這樣切換過程跟Keepalived類似,是非常短及不需要人為干預的。#p#

三、DRBD的使用

DRBD需要構(gòu)建在底層設備之上,然后構(gòu)建出一個塊設備出來。對于用戶來說,一個DRBD設備,就像是一塊物理的磁盤,可以在商脈內(nèi)創(chuàng)建文件系統(tǒng)。DRBD所支持的底層設備有以下這些類:

(1)一個磁盤,或者是磁盤的某一個分區(qū)

(2)一個soft raid 設備

(3)一個LVM的邏輯卷

(4)一個EVMS(Enterprise Volume Management System,企業(yè)卷管理系統(tǒng))的卷

(5)其他任何的塊設備

我們的線上環(huán)境采取的第一種,即用單獨的磁盤來做的DRBD。#p#

四、DRBD的配置過程

我查閱了網(wǎng)上大量的教程類文間,感覺寫得不算是詳細;今天我登陸到服務器上,發(fā)現(xiàn)我的DRBD+Heartbeat已經(jīng)穩(wěn)定運行了161天(海量圖片文件服務器),相當?shù)姆€(wěn)定和高效。如果沒有線上環(huán)境的同學也不要著急,大家完全可以根據(jù)我的文章用VMware workstation6.0+Centos5.x系統(tǒng)實現(xiàn)這個實驗,達到熟練掌握的目的。需要注意的地方我會重點說明,整個測試過程參考生產(chǎn)服務器。

服務器1:centos1.7788.com,單獨拿一塊硬盤sdb作DRBD

服務器2:centos2.7788.com,單獨拿一塊硬盤sdb作DRBD

網(wǎng)絡拓補很簡單:

centos1.7788.com eth0:192.168.4.191,物理bridge連接,eth1:10.0.0.1,這個可以采用虛擬網(wǎng)段VM5

centos2.7788.com eth0:192.168.4.192,物理bridge連接,eth1:10.0.0.2,這個可以采用虛擬網(wǎng)段VM5

VIP:   192.168.4.194,這個是通過Heartbeat來實現(xiàn)的,原理跟Keepalived類似,它通過在某臺服務器的eth0:0上綁定,如果遇到故障就轉(zhuǎn)移,達到高HA的目的;這個同時也是對外提供服務的IP。

Hosts的配置在二臺機器上一樣,不需要太復雜,只配置心跳部分即可,即:

centos1.7788.com 192.168.4.191 centos1
centos2.7788.com 192.168.4.192 centos2

另外關于時間同步一說,蠻多哥哥說要ntpdate,其實也沒什么必要;不過為了線上環(huán)境的嚴謹,這步就做一下吧,ntpdate ntp.api.bz。#p#

◆DRBD的安裝和配置

DRBD官方網(wǎng)站:http://www.linux-ha.org/DRBD

源碼下載地址: http://oss.linbit.com/drbd

FAQ: http://www.linux-ha.org/DRBD/FAQ

目前流行的Linux中只有Centos有預編譯好的安裝包和對應內(nèi)核.

如果不想用Centos可以選擇從源碼安裝.

DRBD有兩種安裝模式:直接編譯進內(nèi)核 或 作為一個可加載的內(nèi)核模塊編譯.

以下使用的是CentOS 5.2 i386 系統(tǒng)安裝與測試:

1. 安裝依賴庫.

yum install gcc gcc-c++ make glibc flex

2. 在primary和secondary上都使用相同的安裝方法:

  1. tar zxvf drbd-8.0.6.tar.gz  
  2. cd drbd-8.0.6  
  3. make  
  4. //make KDIR=/usr/src/linux *內(nèi)核所在的位置*, 如果沒有更改內(nèi)核可  
  5. //直接運行make, 軟件會直接到/lib/module里邊去尋找系統(tǒng)環(huán)境,  
  6. //如果是新的內(nèi)核需要對內(nèi)核進行編譯安裝, 否則make時候會錯誤中斷掉.  
  7. make install 

 

3. 安裝完主要生成命令: “drbdsetup”, “drbdadmin”

和配置文件: /etc/drbd.conf

啟動文件: /etc/init.d/drbd

模塊文件: drbd.ko  (在編譯好的安裝包目錄下的drbd下可以找到)

 

  1. ls /lib/modules/2.6.18-128.el5/kernel/drivers/block/  
  2. cpqarray.ko  drbd.ko  nbd.ko  sx8.ko 

 

所有命令和配置文件都可以在源碼包編譯成功的目錄下面找到.

./scripts/drbd.conf是最原始的配置文件, 當/etc/drbd.conf被破壞, 可以直接拷貝覆蓋掉.#p#

4. drbd采用的是模塊控制的方式, 所以先要加載drbd.ko 模塊.

 

  1. modprobe drbd  
  2. 查看drbd模塊是否已經(jīng)加載到內(nèi)核中了:  
  3. lsmod | grep drbd  
  4. drbd    226352  2         //有的話表示加載模塊成功. 

 

5. 先確認兩臺要鏡像的機器是否正常, 之間的網(wǎng)絡是否通暢, 需要加載的硬盤是否處于umount狀態(tài).

6. 在兩臺主機上都創(chuàng)建硬件設備drbd.

 

  1. mknod /dev/drbd0 b 147 0  
  2. //mknod /dev/drbd1 b 147 1  
  3. //mknod /dev/drbd2 b 147 2  如需多個drbd設備則依次去創(chuàng)建. 

 

7. 二臺機器將/dev/sdb1互為鏡相(兩臺機器配置相同).

  1. yum -y install portmap  
  2. yum -y install nfs  
  3. mkdir /d      //創(chuàng)建共享目錄.  
  4. vim /etc/exports  
  5. /d 10.1.2.0/255.255.252.0(rw,no_root_squash,no_all_squash,sync)  
  6. /etc/init.d/portmap start  
  7. chkconfig –level 3 portmap on  
  8. chkconfig –level 3 nfs off  
  9. //nfs不需要啟動, 也不需要設置成開機自動運行, 這些都將由后面的heartbeat來完成. 

 

8. 配置drbd.

DRBD運行時,會讀取一個配置文件/etc/drbd.conf.

這個文件里描述了DRBD設備與硬盤分區(qū)的映射關系, 和DRBD的一些配置參數(shù)

 

  1. [root@centos1 ~]# cat /etc/drbd.conf  
  2. #創(chuàng)建一個資源,名字叫r0  
  3. resource r0 {  
  4.  protocol C;  
  5.  #采用C協(xié)議,表示收到遠程主機的寫入確認后,則認為寫入完成。  
  6.  startup { wfc-timeout 0; degr-wfc-timeout 120; }  
  7.  disk { on-io-error detach; }  
  8.  net {  
  9.      timeout 60;  
  10.      connect-int 10;  
  11.      ping-int 10;  
  12.      max-buffers 2048;  
  13.      max-epoch-size 2048;  
  14.      } 
  1.  syncer { rate 30M; }  
  2. #設置主備節(jié)點同步時的網(wǎng)絡速率最大值  
  3.  on centos1.7788.com {  
  4.    device    /dev/drbd0;  
  5.    disk      /dev/sdb;  
  6.    address   10.0.0.1:7788;  
  7.    meta-disk internal;  
  8.  }  
  9.  on centos2.7788.com {  
  10.    device    /dev/drbd0;  
  11.    disk      /dev/sdb;  
  12.    address   10.0.0.2:7788;  
  13.    meta-disk internal;  
  14.  }  
  15. }  
  16. #每個主機的說明以"on"開頭,分別是各自的主機名,再后面的{}為這個主機的配置;監(jiān)聽端口為7788, meta-disk internal即表示在同一個局域網(wǎng)內(nèi) 

 

#p#

9.drbd的啟動, 激活前面配置的drbd資源 “r0″. (兩個節(jié)點都要執(zhí)行)

在啟動DRBD之前,你需要分別在兩臺主機的hdb1分區(qū)上, 創(chuàng)建供DRBD記錄信息的數(shù)據(jù)塊.

分別在兩臺主機上執(zhí)行:

 

  1. [root@centos1 /]# drbdadm create-md r0    //創(chuàng)建r0的資源, r0是我們在drbd.conf里定義的資源名稱.  
  2. [root@centos2 /]# drbdadm create-md r0 

 

現(xiàn)在可以啟動drbd了, 分別在兩臺主機上執(zhí)行.

  1. [root@centos1 /]# /etc/init.d/drbd start #我喜歡用service drbd start  
  2. [root@centos2 /]# /etc/init.d/drbd start 

 

設置drbd開機自動啟動.

  1. [root@centos1 /]# chkconfig --add drbd  
  2. [root@centos2 /]# chkconfig --add drbd 

 

現(xiàn)在可以查看drbd當前的狀態(tài), 然后在centos1上執(zhí)行:

 

  1. [root@centos1 /]# cat /proc/drbd  
  2. version: 8.0.0 (api:86/proto:86)  
  3. SVN Revision: 2713 build by root@centos1, 2008-06-27 14:07:14  
  4. 1: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r—  
  5. ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0  
  6. resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0  
  7. act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0 

 

第一行的’st’表示兩臺主機的狀態(tài),都是”備機”狀態(tài).

‘ds’是磁盤狀態(tài),都是”不一致”狀態(tài).

這是由于,DRBD無法判斷哪一方為主機,以哪一方的磁盤數(shù)據(jù)作為標準數(shù)據(jù).

所以,我們需要初始化一個主機, 那么需要在centos1上執(zhí)行.

10.初始化centos1(這步只要在主節(jié)點上操作)

 

  1. [root@centos1 /]# drbdsetup /dev/drbd0 primary -o   //定義為主節(jié)點.  
  2. # drbdadm primary r0 

 

第一次設置主節(jié)點時用 drbdadm 命令會失敗, 所以先用drbdsetup 來做, 以后就可以用drbdadm了.

再次查看drbd當前的狀態(tài).

 

  1. [root@centos1 ~]# cat /proc/drbd  
  2. version: 8.0.0 (api:86/proto:86)  
  3. SVN Revision: 2713 build by root@centos1, 2008-06-27 14:07:14  
  4. 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r—  
  5. ns:18528 nr:0 dw:0 dr:18528 al:0 bm:1 lo:0 pe:0 ua:0 ap:0  
  6. [>...................] sync’ed:  0.3% (8170/8189)M  
  7. finish: 6:46:43 speed: 336 (324) K/sec  
  8. resync: used:0/31 hits:1156 misses:2 starving:0 dirty:0 changed:2  
  9. act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0 

 

現(xiàn)在主備機狀態(tài)分別是’主/備’, 主機磁盤狀態(tài)是’實時’, 備機狀態(tài)是’不一致’.

在第3行, 可以看到數(shù)據(jù)正在同步中, 即主機正在將磁盤上的數(shù)據(jù), 傳遞到備機上.

現(xiàn)在的進度是0.3%.

設置完之后的第一次同步耗時比較長, 因為需要把整個分區(qū)的數(shù)據(jù)全部同步一遍.

第一次同步完成之后, 就可以對drbd的設備創(chuàng)建文件系統(tǒng)了:

稍等一段時間, 在數(shù)據(jù)同步完后, 再查看一下兩臺機器的DRBD狀態(tài):

 

  1. [root@centos1 ~]# cat /proc/drbd  
  2. SVN Revision: 3048 build by root@centos1.7788.cn, 2010-01-20 06:09:12  
  3. 0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r— 

 

 

  1. [root@centos2 ~]# service drbd status  
  2. SVN Revision: 3048 build by root@centos2.7788.cn, 2010-01-20 06:09:02  
  3. 0: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate C r— 

 

現(xiàn)在磁盤狀態(tài)都是’實時’, 表示數(shù)據(jù)同步完成了.

#查看drbd的實時狀態(tài),我喜歡用service drbd status

11.drbd的使用.

現(xiàn)在可以把主機上的DRBD設備掛載到一個目錄上進行使用.

備機的DRBD設備無法被掛載, 因為它是用來接收主機數(shù)據(jù)的, 由DRBD負責操作.

在centos1主服務器上執(zhí)行:

 

  1. [root@centos1 /]# mkfs.ext3 /dev/drbd0  
  2. [root@centos1 mnt]# mount /dev/drbd0 /d      //只要在主節(jié)點上操作 

 

現(xiàn)在, 就可以對 /d 分區(qū)進行讀寫操作了.

注意: secondary節(jié)點上不允許對drbd設備進行任何操作, 包括只讀.

所有的讀寫操作只能在primary節(jié)點上進行.

只有當primary節(jié)點掛掉之后, secondary節(jié)點才能提升成為primary節(jié)點, 繼續(xù)進行讀寫操作.#p#

五、Heartbeat的配置過程

真實的服務器之間的連接用交叉線連接,本著簡單高效的原則,直接購買即可。

1. 安裝, 在兩臺主機都同樣的安裝.

 

  1. yum -y install heartbeat  
  2. #奇怪的事,此命令要執(zhí)行二次,不然heartbeat還真安裝不上去,奇怪的問題。  
  3. 其中Heartbeat配置共涉及3個文件.  
  4. /etc/ha.d/ha.cf  
  5. /etc/ha.d/haresources  
  6. /etc/ha.d/authkeys  
  7. /etc/ha.d/resource.d/killnfsd 

 

2. 二個節(jié)的配置的配置文件都是一樣, 文件內(nèi)容如下

 

  1. logfile         /var/log/ha-log  
  2. #定義HA的日志名字及存放位置  
  3. logfacility     local0  
  4. keepalive       2  
  5. #設定心跳(監(jiān)測)時間為2秒  
  6. deadtime        5  
  7. #死亡時間定義為5秒  
  8. ucast           eth1 10.0.0.2  
  9. #采用單播方式,IP地址指定為對方IP  
  10. auto_failback   off  
  11. #服務器正常后由主服務器接管資源,另一臺服務器放棄該資源  
  12. node            centos1.7788.com  centos2.7788.com  
  13. #定義節(jié)點 

 

2. 編輯雙機互聯(lián)驗證文件: authkeys

 

  1. [root@centos1 ha.d]# vim /etc/ha.d/authkeys  
  2. auth 1  
  3. 1 crc  
  4. //需要將 /etc/ha.d/authkeys設為600的權(quán)限.  
  5. [root@centos1 ha.d]# chmod 600 /etc/ha.d/authkeys  
  6. [root@centos2 ha.d]# chmod 600 /etc/ha.d/authkeys 

 

3. 編輯集群資源文件: haresources

 

  1. [root@centos1 ha.d]# vim /etc/ha.d/haresources  
  2. centos1.7788.com IPaddr::192.168.4.194/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/d::ext3 killnfsd  
  3. #此文件二臺機器上配置一樣,千萬不要自做聰明在另一臺機器上配置成centos2.7788.com 

 

4.編輯腳本文件killnfsd,目的其實就是為了重啟nfs服務。這是因為NFS服務切換后,必須重新mount一下nfs共享出來的目錄,否則會出現(xiàn)stale NFS file handle的錯誤。

 

  1. #[root@centos1 ha.d]# vim /etc/ha.d/resource.d/killnfsd  
  2. #killall -9 nfsd; /etc/init.d/nfs restart; exit 0  
  3. #[root@centos1 ha.d]# chmod 755 /etc/ha.d/resource.d/killnfsd 

 

5. 在二個節(jié)點啟動Heartbeat即可,先在主節(jié)點啟動

  1. [root@centos1 /]# service heartbeat start  
  2. [root@centos2 /]# service heartbeat start  
  3. #這時就可以在另外的機器上面,正常掛載192.168.4.194:/d到自己的/mnt/data下進行正常的讀寫了,client會認為這個就是一個提供NFS的機器。 

 

#p#

六、測試

由于我的線上環(huán)境已經(jīng)很穩(wěn)定了,這個測試結(jié)果是讓大家進行的,讓大家熟悉DRBD+Heartbeat;我建議做完此步后再做測試,看Heartbeat是否能做到真正的熱切換。

測試一、在另一臺FreeBSD8下掛載192.168.4.194:/d,向里面寫數(shù)據(jù)時,忽然重新啟動主DRBD,看此時寫數(shù)據(jù)有影響不,發(fā)現(xiàn)DRBD+Heartbeat正常切換還是需要些時間的;

測試二、正常狀態(tài)下關機Primary機,然后看數(shù)據(jù)有無問題,觀察DRBD的status;然后等主機啟動后,再觀察變化,然后再關機secondary,然后再啟動,觀察DRBD變化及Heartbeat起作用了沒。

測試三、假設此時把primary的eth0 給ifdown了, 然后直接在secondary上進行主的提升,并也給mount了, 發(fā)現(xiàn)在primary上測試拷入的文件確實同步過來了。之后把primary的 eth0 恢復后, 發(fā)現(xiàn)沒有自動恢復主從關系, 經(jīng)過支持查詢,發(fā)現(xiàn)出現(xiàn)了drbd檢測出現(xiàn)了Split-Brain 的狀況, 兩個節(jié)點各自都standalone了,故障描術(shù)如下:Split-Brain detected, dropping connection!這個即時傳說中的腦裂了,DRBD官方推薦手動恢復(生產(chǎn)環(huán)境下出現(xiàn)這個機率的機會很低的,誰會去故障觸動生產(chǎn)中的服務器)

以下手動恢復Split-Brain狀況:

i. 在secondary上:

  1. drbdadm secondary r0  
  2. drbdadm disconnect all  
  3. drbdadmin -- --discard-my-data connect r0 

 

ii.在primary上:

  1. drbdadm disconnect all  
  2. drbdadm connect r0 

 

測試四、假設Primary因硬件損壞了,需要將Secondary提生成Primay主機,如何處理,方法如下:

在primaty主機上,先要卸載掉DRBD設備.

[root@centos1 /]# umount /d

將主機降級為”備機”

 

  1. [root@centos1 /]# drbdadm secondary r0  
  2. [root@centos1 /]# cat /proc/drbd  
  3. 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r— 

 

現(xiàn)在,兩臺主機都是”備機”.

在備機centos2上, 將它升級為”主機”.

 

  1. [root@centos2 /]# drbdadm primary r0  
  2. [root@centos2 /]# cat /proc/drbd  
  3. 1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r— 

 

現(xiàn)在centos2成為主機了.

至此,整個實驗結(jié)束了;建議大家多做測試和總結(jié),幾十遍后就會完全掌握其用法,祝大家Happy先了。

【51CTO.com獨家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請注明原文出處及作者?!?/p>

責任編輯:林琳 來源: 51CTO.com
相關推薦

2009-09-25 10:13:15

2018-03-23 14:48:27

靜態(tài)服務器實現(xiàn)

2021-09-10 10:07:17

Nginx虛擬主機服務器

2009-09-08 14:30:44

NFS服務器

2018-09-11 08:37:05

高并發(fā)服務器優(yōu)化

2009-04-28 19:02:23

2010-07-22 14:02:44

遠程文件服務器加密EFS

2009-11-27 13:11:31

Samba做文件服務器

2011-09-13 09:31:07

文件服務器云存儲云計算

2011-07-18 14:47:39

DC文件服務器

2009-02-11 00:09:00

2011-08-02 13:55:44

服務器群集文件服務器

2009-09-08 16:38:33

NFS服務器

2019-08-06 08:55:22

PHP數(shù)據(jù)庫Linux

2011-09-13 10:01:47

文件服務器主板硬盤

2011-09-01 18:12:43

Linuxsamba

2012-11-22 09:43:08

2020-05-27 12:20:34

LinuxSSH服務器

2012-12-31 10:54:09

LinuxNFS

2011-11-04 10:34:27

文件服務器中小企業(yè)調(diào)研報告
點贊
收藏

51CTO技術(shù)棧公眾號