歡迎您光臨本站 註冊首頁

用drbd+haertbeat做DNS熱備

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

用drbd+haertbeat做DNS熱備

1.目的:為了使DNS數據更加安全及DNS服務更加穩定,特使用DRBD+HEARTBEAT技術做DNS服務的熱備份。
2.系統設置:
a伺服器:
eth0:192.168.2.248
eth1:10.0.0.248
/dev/sdb為空
b伺服器:
eth0:192.168.2.44
eth1:10.0.0.44
/dev/sdb為空
系統軟體要求:
必須安裝所有開發包工具。
SElinux Disable
Iptable Disable(為了配置方便,建議先關掉,后根據情況開啟)
3.功能實現:
3.1系統安裝(略)
配置系統
fdisk -l
/dev/sdb1               1         261     2096451   83  Linux
vi /etc/hosts
192.168.2.44            mail1.xx.xx.net mail1
192.168.2.248           mail.xx.xx.net mail
10.0.0.44                mail1.xx.xx.net mail1
10.0.0.248              mail.xx.xx.net mail
配置這裡是因為DRBD及HEARTBEAT的有關配置必須和uname -n一致.
vi /etc/fstab
/dev/drbd0              /var/named              ext3    noauto          0 0
3.2DRBD安裝(我用的是CentOS 4.5,其它教程中提到的升級內核及為內核打補丁,我都沒用上)

tar zxvf drbd-8.2.0.tar.gz
cd drbd-8.2.0

(8.X只能用於2.6內核,7.X可以用於2.4及2.6內核)
make (也可以用make KDIR=/usr/src/linux   /*內核所在的位置*/)
make install
安裝完主要生成命令:drbdsetup ,drbdadmin
和配置文件:/etc/drbd.conf ,啟動文件,/etc/init.d/drbd
3.3創建硬體設備drdb
mknod /dev/drbd0 b 147 0 (在8.X以上的版本不需要做這一步,具體在下面會介紹)(我這裡只用到了一個數據源,所以只需要建一個,如果有

很多數據源可以用以下格式創建更多mknod /dev/drbdX b 147 X X代表數字)
3.3DRDB協議說明
A 數據一旦寫入磁碟併發送到網路中就認為完成了寫入操作。
B 收到接收確認就認為完成了寫入操作。
C 收到寫入確認就認為完成了寫入操作。
您還可以選擇其它參數來將數據傳輸給磁碟和網路選項
3.4配置drdb.conf文件:
resource r0 {

  protocol C;

  handlers {

pri-on-incon-degr "echo 'DRBD: primary requested but inconsistent!'| wall; /etc/init.d/heartbeat stop"; #"halt -f";



    pri-lost-after-sb "echo 'DRBD: primary requested but lost!'| wall; /etc/init.d/heartbeat stop"; #"halt -f";

    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";


    outdate-peer "/usr/sbin/drbd-peer-outdater";
  }

  startup {


    degr-wfc-timeout 120;    # 2 minutes.

  }

  disk {

    on-io-error   detach;

  }


  net {


     timeout       120;    #  6 seconds  (unit = 0.1 seconds)
     connect-int   20;    # 10 seconds  (unit = 1 second)
     ping-int      20;    # 10 seconds  (unit = 1 second)

     max-buffers     2048;





     max-epoch-size  2048;

     ko-count 10;



     cram-hmac-alg "sha1";
     shared-secret "FooFunFactory";

    after-sb-0pri disconnect;

    after-sb-1pri disconnect;

    after-sb-2pri disconnect;

    rr-conflict disconnect;

  }

  syncer {
    rate 10M;
    al-extents 257;
  }

  on mail1.xx.xx.net {
    device     /dev/drbd0;
    disk       /dev/sdb1;
    address    10.0.0.44:7788;
    meta-disk  internal;

    # mete-disk可以使用internal和/dev/ice/name 這兩種形式.
   
  }

  on mail.xx.xx.net {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   10.0.0.248:7788;
    meta-disk internal;
  }
}

3.5啟動drbd
3.5.1首先在248下
modprobe drbd
lsmod
drdbadm create-md all ;/etc/rc.d/init.d/drdb start;cat /proc/drdb
(這裡是8.x的啟動過程.drdbadm create-md all及建立了meta-disk,它會自動創建/dev/drbd0.在執行過程中需要你按yes確認)

netstat -ant
3.5.2在44下
modprobe drbd
drdbadm create-md all ;/etc/rc.d/init.d/drdb start;cat /proc/drdb
3.6設置許可權
在248下
drbdadm -- --overwrite-data-of-peer primary drbd0; cat /proc/drbd
mkfs.ext3 /dev/drbd0
mv /var/named /var/named.old
mkdir /var/named
chown -R named:named /var/named
mount /dev/drbd0 /var/named
cp -dpR /var/named.old/. /var/named/.
(44的安裝基本於上面相同)
測試一下:
248下:
umount /var/named
drbdadm secondary all
44下:
drbdadm primary all
mount /dev/drbd0 /var/named
ls -l
4.HEARTBEAT的安裝
rpm -ivh heartbeat-pils-2.0.8-2.el4.centos.i386.rpm
rpm -ivh heartbeat-stonith-2.0.8-2.el4.centos.i386.rpm
rpm -ivh lm_sensors-2.8.7-2.40.3.i386.rpm
rpm -ivh heartbeat-2.0.8-2.el4.centos.i386.rpm
cp /usr/share/doc/heartbeat-2.0.8/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.0.8/haresources /etc/ha.d/
vi /etc/ha.d/authkeys
###########
auth 2
2 crc
###########
(測試環境,所以用此驗證方法)

vi /etc/ha.d/ha.cf

############
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     daemon
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 10.0.0.248
ucast eth1 10.0.0.44
auto_failback on
node    mail.xx.xx.net
node    mail1.xx.xx.net
############
vi /etc/ha.d/haresources
############
mail.xx.xx.net        192.168.2.192 drbddisk::r0 Filesystem::/dev/drbd0::/var/named::ext3 named MailTo::cjq8876@gmail.com
############
(44配置上相同)
reboot
/etc/rc.d/init.d/drbd start
/etc/rc.d/init.d/heartbeat start


有什麼錯誤的地方還請多多指教。(其實以上的方法不但可以做DNS也可以作資料庫及mail服務的熱備)
《解決方案》

好文啊。怎麼沒有人支持一下啊
我也在做DRBD+haertbeat
用DRBD代替共享存儲,用haertbeat進行熱切換
可是不知道到底怎麼寫這個vi /etc/ha.d/haresources
文件系統掛不上
《解決方案》

呵呵,大概是由於DNS帶有主輔伺服器的功能,能做到DNS數據的安全,所以都沒人需要吧!
/etc/ha.d/haresources
你如果這樣理解它的配置就比較容易了.
mail.xx.xx.net        192.168.2.192 drbddisk::r0 Filesystem::/dev/drbd0::/var/named::ext3 named
mail.xx.xx.net是你的主機名既 uname -n
192.168.2.192是你要虛擬出來使用的ip地址.
drbddisk::r0 是指需要啟動的DRBD資源 drbddisk 是個腳本(heartbeat幫我們寫好了,我們只需要使用就可以了)r0表示資源,既你配置drdb中的r0
Filesystem::/dev/drbd0::/var/named::ext3 這段的意思是把/dev/drdb0 掛接到/var/named並以ext3格式.Filesystem也是個腳本,它也可以實現NFS的自動掛接.
named既BIND的啟動腳本啦,通過ln -s /etc/rc.d/init.d/named /etc/ha.d/s***.d(後面忘記了,反正是那個放腳本的目錄下)當然,你也可以把named改成其他的,然後通過響應的修改,就可以實現mysql,mail,apache等等的熱備份了.
:wink: :wink: :wink: :wink: 不是太懂,說錯的地方請見諒!
《解決方案》

寫的挺不錯的。大部分都能夠理解的透
但是對drbddisk 這裡不是太了解
因為我現在做測試的時候。heartbeat沒有問題。
可是drbd有問題。
兩台機器來做。如果一個機器網斷了。或者死機了。在恢復回來的時候 drbd就不行了。
root@cls ~]# service drbd status
drbd driver loaded OK; device status:
version: 8.0.6 (api:86/proto:86)
SVN Revision: 3048 build by root@mds, 2007-10-23 15:40:59
0: cs:WFConnection st:Secondary/Unknown ds:UpToDate/DUnknown C r---
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
        act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
我採用的方式是主/主
我採用斷開鏈接,然後又恢復鏈接 (DRBD)
可是就是恢復不了。
鬱悶
umount /dev/drbd0
drbdadm secondary all
drbdadm disconnect all
drbdadm -- --discard-my-data connect all
drbdadm -- --overwrite-data-of-peer primary all
不知道是怎麼回事
《解決方案》

謝謝分享,先記下了
慢慢看一下。

[火星人 ] 用drbd+haertbeat做DNS熱備已經有555次圍觀

http://coctec.com/docs/service/show-post-21774.html