作者 主題: DRBD + HA  (閱讀 8593 次)

0 會員 與 1 訪客 正在閱讀本文。

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
DRBD + HA
« 於: 2009-06-07 17:55 »
Hello,

小弟在VM試兩台DRBD + HA, 原來是很難的, 如果有大大有設定過,
可否給一些教學嗎?


Thank !!

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #1 於: 2009-06-08 09:56 »
這是我之前實作出來的筆記,你就參考看看吧!其實不會很困難的,多加實驗就ok了

OS:CentOS 4.6
FS1:10.10.10.6
FS2:10.10.10.8
Virtual IP:10.10.10.7
PS:兩台的安裝步驟及設定檔,皆全部相同。請將第一台的設定檔也Copy一份至第二台

1、Create New Partition
代碼: [選擇]
[root@fs1 /]# fdisk /dev/sda
新增一個partition,做為儲存file的空間
[root@fs1 /]# reboot
需重新開機,才能加入
[root@fs1 /]# pvcreate /dev/sda4
將/dev/sda4建立成Physical volume
[root@fs1 /]# vgcreate fsvg /dev/sda4
建立一個Volume group,且名字叫fsvg,並將 /dev/sda4加入到fsvg這個Volume group中
[root@fs1 /]# lvcreate -L 97.71G -n fslv fsvg
建立一個Logical volume,設定空間為 97.71G,且名字叫fslv,並將fsvg加入到這個Logical volume

2、Install DRBD
DRBD is a block device which is designed to build high availability clusters. This is done by mirroring a whole block device via (a dedicated) network. You could see it as a network raid-1
代碼: [選擇]
[root@fs1 /]# cd /tmp/
[root@fs1 tmp]# wget http://oss.linbit.com/drbd/8.2/drbd-8.2.5.tar.gz
[root@fs1 tmp]# tar zxvf drbd-8.2.5.tar.gz
[root@fs1 tmp]# cd drbd-8.2.5
[root@fs1 drbd-8.2.5]# cp drbd.spec.in drbd.spec
[root@fs1 drbd-8.2.5]# make rpm KDIR=/usr/src/kernels/2.6.9-67.EL-smp-i686/
[root@fs1 drbd-8.2.5]# cd dist/RPMS/i386/
[root@fs1 i386]# rpm -ivh drbd-8.2.5-3.i386.rpm
[root@fs1 i386]# rpm -ivh drbd-km-2.6.9_67.ELsmp-8.2.5-3.i386.rpm
3、Install heartbeat & Config heartbeat
[root@fs1 tmp]# yum install heartbeat

3-1、vi /etc/hosts
代碼: [選擇]
10.10.10.6              fs1
10.10.10.7              fs
10.10.10.8              fs2

3-2、vi /etc/ha.d/ha.cf
代碼: [選擇]
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast   eth0
auto_failback off
watchdog /dev/watchdog
node    fs1
node    fs2
respawn hacluster /usr/lib/heartbeat/ipfail
debug 0

3-3、vi /etc/ha.d/authkeys
代碼: [選擇]
auth 1
1 crc

4-4、vi /etc/ha.d/haresource
代碼: [選擇]
fs1 IPaddr::10.10.10.7/24 drbddisk::fs Filesystem::/dev/drbd0::/var/www::ext3
4、Config DRBD
4-1、vi /etc/drbd.conf
代碼: [選擇]
#
# please have a a look at the example configuration file in
# /usr/share/doc/drbd/drbd.conf
#
global {
minor-count 1;
}
resource fs {
protocol C;
# There are A, B and C protocols. Stick with C.
#  incon-degr-cmd "echo 'DRBD Degraded!' | wall; sleep 60 ; halt -f";
# If a cluster starts up in degraded mode, it will echo a message to all
# users. It'll wait 60 seconds then halt the system.
on fs1 {
device /dev/drbd0; # The name of our drbd device.
disk /dev/mapper/fsvg-fslv;    # Partition we wish drbd to use.
address 10.10.10.6:7788; # node0 IP address and port number.
meta-disk internal; # Stores meta-data in lower portion of internal.
}
on fs2 {
device /dev/drbd0; # Our drbd device, must match node0.
disk /dev/mapper/fsvg-fslv;    # Partition drbd should use.
address 10.10.10.8:7788; # IP address of node1, and port number.
meta-disk internal; #Stores meta-data in lower portion of internal.
}
disk {
on-io-error detach; # What to do when the lower level device errors.
}
net {
max-buffers 2048; #datablock buffers used before writing to disk.
ko-count 4; # Peer is dead if this count is exceeded.
#on-disconnect reconnect; # Peer disconnected, try to reconnect.
after-sb-0pri discard-older-primary;
after-sb-1pri call-pri-lost-after-sb;
after-sb-2pri call-pri-lost-after-sb;
}
syncer {
rate 120M; # Synchronization rate, in megebytes. Good for 100Mb network.
#group 1;  # Used for grouping resources, parallel sync.
al-extents 257; # Must be prime, number of active sets.
}
startup {
wfc-timeout 120; # drbd init script will wait infinitely on resources.
degr-wfc-timeout 120; # 2 minutes.
}
} # End of resource web

4-2、Create DRBD device
代碼: [選擇]
[root@fs1 /]# drbdadm create-md fs
建立屬於drbd的meta-data
[root@fs1 /]# reboot
[root@fs2 /]# drbdadm create-md fs
建立屬於drbd的meta-data
[root@fs1 /]# drbdadm -- --overwrite-data-of-peer primary fs
告訴drbd fs1為primary,並把資料同步至fs2
[root@fs1 /]# mkfs.ext3 -L fs /dev/drbd0

5、Startup heartbeat
[root@fs1 /]# /etc/init.d/heartbeat start
[root@fs2 /]# /etc/init.d/heartbeat start

5-1、Check Service
代碼: [選擇]
[root@fs1 /]# cat /proc/drbd
確認drbd status是否為Connected
[root@fs1 /]# ifconfig
確認10.10.10.7的IP是否有帶起
[root@fs1 /]# df -h
確認 /var/www這個folder是否有正確的mount起來

如上面的確認都是正確的,即安裝成功
« 上次編輯: 2009-06-08 09:58 由 olderboy »

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #2 於: 2009-06-08 12:19 »
Thank olderboy

1. 你有沒有使用DRBD+HA在真實環境呢? 我現在正在模擬測試DRBD failover 這一part, 當我昇兩台VM都online時,
輸入以下指令在兩台VM就可以人手failover:

[root@node1 /]# umount /repdata ; drbdadm secondary repdata
[root@node2 /]# mkdir /repdata ; drbdadm primary repdata ; mount /dev/drbd0 /repdata

是否一定需要人手呢, 如果用HA的haresource就可以自動failover resource?

2. drbd.conf 內有好多資料, 應該要注意些什麼呢?

Thanks

olderboy

  • 憂鬱的高中生
  • ***
  • 文章數: 100
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #3 於: 2009-06-08 14:31 »
Thank olderboy

1. 你有沒有使用DRBD+HA在真實環境呢? 我現在正在模擬測試DRBD failover 這一part, 當我昇兩台VM都online時,
輸入以下指令在兩台VM就可以人手failover:

[root@node1 /]# umount /repdata ; drbdadm secondary repdata
[root@node2 /]# mkdir /repdata ; drbdadm primary repdata ; mount /dev/drbd0 /repdata

是否一定需要人手呢, 如果用HA的haresource就可以自動failover resource?

2. drbd.conf 內有好多資料, 應該要注意些什麼呢?

Thanks

1、我有用在真實環境上,用於MySQL、Oracle、File Server 等的 HA上面
    不需要一定要手動,只要搭配heartbeat就可以做到auto failover了,請看我貼上來的內容

2、after-sb-0pri discard-older-primary;
    after-sb-1pri call-pri-lost-after-sb;
    after-sb-2pri call-pri-lost-after-sb;
就這三行吧!!當連線中斷,從新連線後,他是會依照這個參數來做重新連線的依據


leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #4 於: 2009-06-10 16:24 »
Thank olderboy

1. 你有沒有使用DRBD+HA在真實環境呢? 我現在正在模擬測試DRBD failover 這一part, 當我昇兩台VM都online時,
輸入以下指令在兩台VM就可以人手failover:

[root@node1 /]# umount /repdata ; drbdadm secondary repdata
[root@node2 /]# mkdir /repdata ; drbdadm primary repdata ; mount /dev/drbd0 /repdata

是否一定需要人手呢, 如果用HA的haresource就可以自動failover resource?

2. drbd.conf 內有好多資料, 應該要注意些什麼呢?

Thanks

1、我有用在真實環境上,用於MySQL、Oracle、File Server 等的 HA上面
    不需要一定要手動,只要搭配heartbeat就可以做到auto failover了,請看我貼上來的內容

2、after-sb-0pri discard-older-primary;
    after-sb-1pri call-pri-lost-after-sb;
    after-sb-2pri call-pri-lost-after-sb;
就這三行吧!!當連線中斷,從新連線後,他是會依照這個參數來做重新連線的依據


1. 可否解釋以上三段參數嗎?

2. 現在參考你和這個website http://wiselysong.blogspot.com/2009/01/heartbeatdrbdmysql-on-debian-etch.html 來實作, 有看過ha-linux website, 但入面太多文件... 不知道自那個....

3. 在上面的website有介紹haresources有一個參數叫noatime, 你知不知是有什麼用呢? 和你的haresource為何沒有指出http, mysql 等service?

Thanks

« 上次編輯: 2009-06-10 19:44 由 leiw »

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #5 於: 2009-06-11 11:04 »
有一個小問題就是如果restart server後人手 mount /dev/drbd0 /test 出現以下message:

[root@node2 ~]# mount /dev/drbd0 /test
mount: block device /dev/drbd0 is write-protected, mounting read-only
mount: Wrong medium type

如果在/etc/fstab 加一行, 當restart後未start DRBD就不能mount /dev/drbd0.

應該怎樣做呢?

Thanks

s5619132

  • 活潑的大學生
  • ***
  • 文章數: 315
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #6 於: 2009-06-11 11:21 »
就我的記憶 , /etc/fstab 沒有辦法判斷
但你可以用各折衷的辦法

你寫個 script ( 以下是大概的方式, 不是真的 script )
if ( check service DRBD status == start )
then mount /dev/drbd0

然後把這各script 放置在 rc.local 最後一行
當然你能找到更好的方式, 就不一定需要我的建議, 畢竟我這各算是走偏門.

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #7 於: 2009-06-11 11:33 »
就我的記憶 , /etc/fstab 沒有辦法判斷
但你可以用各折衷的辦法

你寫個 script ( 以下是大概的方式, 不是真的 script )
if ( check service DRBD status == start )
then mount /dev/drbd0

然後把這各script 放置在 rc.local 最後一行
當然你能找到更好的方式, 就不一定需要我的建議, 畢竟我這各算是走偏門.
Thank 我會賞試你的script, 但現在要賞試手動mount /dev/drbd0

leiw

  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
回覆: DRBD + HA
« 回覆 #8 於: 2009-06-12 23:25 »
剛試了poweroff node2 然後再poweroff node1來做failover, 但是可以start node2不能start node1.

[root@node1 ~]# service drbd start
Starting DRBD resources:    [ d(resource0) n(resource0) ].
..........
***************************************************************
 DRBD's startup script waits for the peer node(s) to appear.
 - In case this node was already a degraded cluster before the
   reboot the timeout is 0 seconds. [degr-wfc-timeout]
 - If the peer was available before the reboot the timeout will
   expire after 0 seconds. [wfc-timeout]
   (These values are for resource 'resource0'; 0 sec -> wait forever)
 To abort waiting enter 'yes' [  11]:
[root@node1 ~]# cat /proc/drbd
version: 8.0.13 (api:86/proto:86)
GIT-hash: ee3ad77563d2e87171a3da17cc002ddfd1677dbe build by buildsvn@c5-i386-build, 2008-10-02 13:31:44
 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/61 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

Thanks !