天天看點

DRBD+heartbeat+nfs環境部署

 一、DRBD簡介

    分布式複制塊裝置(DRBD 技術)是一種基于軟體的,無共享,複制的存儲解決方案,在伺服器之間的對塊裝置(硬碟,分區,邏輯卷等)進行鏡像

   DRBD 鏡像資料的特點:

 實時性:當應用對磁盤的資料進行修改時,複制立即發生。

 透明性:應用程式的資料存儲在鏡像裝置上是獨立和透明的,資料可存儲在不同的伺服器

上。

 同步鏡像和異步鏡像:同步鏡像,當本地發申請進行寫操作進行時,同步寫到兩台伺服器

上。異步鏡像,當本地寫申請已經完成對本地的寫操作時,開始對對應的伺服器進行寫操作

二、要求及拓撲

  本實驗部署drbd+heartbeat+nfs環境,建立一個高可用(HA)的檔案系統伺服器叢集,通過DRBD保證了伺服器資料的完整性和一緻性。在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣。因為資料同時存在于本地主伺服器和備份伺服器上。切換時,遠端主機隻要使用它上面的那份備份資料,就可以繼續提供主伺服器上相同的服務,并且client使用者對主伺服器的故障無感覺。

<a href="http://blog.51cto.com/attachment/201301/174902407.jpg" target="_blank"></a>

三、實驗環境

系統:VMware redhat-5.4

master  node1.abc.com    192.168.2.1    eth1 192.168.3.1

slave  node2.abc.com    192.168.2.2     eth1 192.168.3.2 

虛拟ip:192.168.2.100

兩台伺服器新加一塊硬碟/dev/sdb,建立/dev/sdb1分區互為鏡像

注意建立分區時,大小要一緻,若不一緻,以小的為準

//時間相同,讀取主機闆時間作為目前時間

# hwclock  -s  

//兩個伺服器的hosts檔案修改,可以正常解析ip與主機名

# echo "192.168.2.1  node1.abc.com" &gt;&gt; /etc/hosts

# echo "192.168.2.2  node1.abc.com" &gt;&gt; /etc/hosts

四、DRBD配置

在node1和node2做以下操作:(在node1在操作,然後可通過scp指令實作相關檔案拷貝到node2上)

1、安裝drbd

#rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

# modprobe  drbd      //加載drbd子產品

# lsmod  |grep drbd    //檢視子產品加載情況

2、主要目錄及指令

/etc/drbd.conf 配置檔案

/etc/rc.d/init.d/drbd 配置腳本

/etc/drbd.d/  主目錄

/sbin/drbdadm 進階别管理工具

/sbin/drbdmeta 低級别管理工具

/sbin/drbdsetup 低級别管理工具

/usr/sbin/drbd-overview 檢視工具

注: rpm  -ql   drbd83 檢視

3、修改配置檔案

#vim /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";

~                                                                            

~                                                                                        

:r /usr/share/doc/drbd83-8.3.8/drbd.conf     //末行模式下執行讀指令來加載

#cp /etc/drbd.d/global_common.conf   /etc/drbd.d/global_common.conf.bak

# vim /etc/drbd.d/global_common.conf    (替換掉原來的内容)

global {

        usage-count yes;

        # minor-count dialog-refresh disable-ip-verification

}

common {

        protocol C;  

        startup {    //啟動延時配置

                wfc-timeout  120;

                degr-wfc-timeout 120;

         }

        disk {

                  on-io-error detach;

                  fencing resource-only;

          }

        net {

                cram-hmac-alg "sha1";

                shared-secret  "mydrbdlab";

        syncer {

                  rate  100M;

     }

# vim /etc/drbd.d/web.res    //定義資源 

resource  web {               //資源名稱

        on node1.abc.com {

        device   /dev/drbd0;

        disk    /dev/sdb1;

        address  192.168.2.1:7789;

        meta-disk       internal;

        }  

        on node2.abc.com {

        address  192.168.2.2:7789;

        }   

4、初始化,啟動服務 

#drbdadm   create-md web

# service drbd start   &amp;&amp;chkconfig drbd on   //并設為開機啟動

5、指定主節點

#drbdadm   -- --overwrite-data-of-peer primary web   (在自定義主節點上執行)

   不加 “-- --overwrite-data-of-peer”

   錯誤:

   0: State change failed: (-2) Need access to UpToDate data

   Command 'drbdsetup 0 primary' terminated with exit code 17

  日志資訊:block drbd0: State change failed: Need access to UpToDate data

6、建立目錄,實作挂載(在主節點上執行)

#mkdir /data

#mkfs -t ext3 /dev/drbd0 //格式化

#mount /dev/drbd0  /data

7、檢視drbd狀态

#drbd-overview   (#service drbd status)

主節點node1

<a href="http://blog.51cto.com/attachment/201301/174318862.png" target="_blank"></a>

備份節點nod2

<a href="http://blog.51cto.com/attachment/201301/174331507.png" target="_blank"></a>

五、nfs配置

兩台伺服器配置相同,可通過scp拷貝

1、修改nfs的共享菜單

# echo "/data  192.168.2.0/24(rw,sync,no_root_squash)" &gt; /etc/exports

2、啟動服務

# service nfs start &amp;&amp; chkconfig nfs on

3、修改nfs啟動腳本。

   /etc/init.d/nfs中的stop部分killproc 

   腳本nfsd  -2  修改為 -9

116   stop)

117         # Stop daemons.

118         echo -n $"Shutting down NFS mountd: "

119         killproc rpc.mountd

120         echo

121         echo -n $"Shutting down NFS daemon: "

122         killproc nfsd -9

六、heartbeat配置

在node1和node2做如下操作

1、安裝

heartbeat-2.1.4-11.el5.i386.rpm

heartbeat-pils-2.1.4-10.el5.i386.rpm

heartbeat-stonith-2.1.4-11.el5.i386.rpm

依賴包:

libnet-1.1.4-3.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

注:下載下傳位址http://vault.centos.org/5.4/extras

2、拷貝配置文檔 

# cd /usr/share/doc/heartbeat-2.1.4/

# cp authkeys  ha.cf  haresources  /etc/ha.d/

3、修改配置文檔

1)、ha.cf配置(做如下添加)

bcast eth1

node node1.abc.com

node node2.abc.com

2)、haresources資源檔案

#echo “node1.abc.com  192.168.2.100/24/eth0 drbddisk::web  Filesystem::/dev/drbd0::/d

ata::ext3 killnfsd”  &gt;&gt; /etc/ha.d/haresoures

3)、驗證authkeys

#vim authkeys

auth 3

3 md5 hello

  #chmod 600  authkeys  設定權限值為600

4)、killnfsd服務控制腳本配置

 #echo “killall -9 nfsd; /etc/init.d/nfs restart; exit 0”  &gt;&gt;/etc/ha.d/resource.d/killnfsd

 #chmod 755 /etc/ha.d/resource.d/killnfsd  //添加可執行權限

4、開啟Heartbeat服務

#service heartbeat start &amp;&amp; chkconfig heartbeat on

七、測試

1、建立挂載

#mkdir  /mnt/data

#mount 192.168.2.100:/data  /mnt/data

2、編寫shell,間隔1s建立一次空檔案xxx

# vim /mnt/data/test.sh

while true

do echo  ----\&gt; trying touch xxx:$(date)

        touch   xxx

   echo  \&lt;---- done touch xxx: $(date)

   echo

   sleep 1

done

3、将主節點node1的heartbeat服務停止,則備份節點node2接管服務

#service heartbeat stop    //node1接點

<a href="http://blog.51cto.com/attachment/201301/174346292.jpg" target="_blank"></a>

注:以上實作的drbd的單主模式, 任何資源在任何特定的時間,叢集中隻存在一個主節點。 正是因為這樣在叢集中隻能有一個節點可以随時操作資料,這種模式可用在任何的檔案系統上(EXT3、EXT4、XFS等等)。

本文轉自 劉園  51CTO部落格,原文連結:http://blog.51cto.com/colynn/1123418