02_DRBD構築

◆ Install
# yum -y install drbd
# yum -y install kmod-drbd82

◆ 設定
相手側アドレスの正引き/逆引きをhostsに登録しておく。
/etc/hosts
--------------------------------------------
192.168.24.101 cluster1
192.168.24.102 cluster2
--------------------------------------------

/etc/drbd.conf
--------------------------------------------
global {
usage-count yes;
}
resource r0 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ## ←ここが重要
# after-sb-0pri disconnect; ←このあたりはポリシーで
# after-sb-1pri disconnect;
# after-sb-2pri disconnect;
# rr-conflict disconnect;
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd0;
disk /dev/hdd2;
address 192.168.24.101:7788;
meta-disk internal;
}
on cluster2 {
device /dev/drbd0;
disk /dev/hdd2;
address 192.168.24.102:7788;
meta-disk internal;
}
}
--------------------------------------------

◆ リンク
# insmod /lib/modules/2.6.18-92.1.6.el5/extra/drbd82/drbd.ko
# drbdadm create-md all
# service drbd start

◆ 状態確認
# cat /proc/drbd
---------------------------------------------------
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-06-26 16:40:17
0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:9767184
---------------------------------------------------
※ 双方がSecondaryになっている状態。

◆ Primaryの設定
# drbdadm -- --overwrite-data-of-peer primary all

◆ Secondaryの設定
# drbdadm secondary r0

ファイルシステム作成
ノード1で実行
# mkfs.ext3 /dev/drbd0
# mkdir /data
# mount /dev/drbd0 /data

ミラーリングの確認
ノード1で実行
# touch /data/test
# umount /dev/drbd0
# drbdadm secondary r0

ノード2で実行
# drbdadm -- --overwrite-data-of-peer primary all
# mkdir /data
# mount /dev/drbd0 /data

※ もし「/dev/drbd0」をマウント解除できない場合は「fuser」コマンドを使用してファイルシステムを使用しているプロセスを見つけ、そのプロセスを終了する。(fuser –km /data でファイルシステムを使用しているプロセスを終了)

◆ 2つ目ミラーディスク(RAC用)を作成
サービス停止
# service drbd stop

/etc/drbd.conf
--------------------------------------------
global {
usage-count yes;
}
resource r0 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd0;
disk /dev/hdd2;
address 192.168.24.101:7788;
meta-disk internal;
}
on cluster2 {
device /dev/drbd0;
disk /dev/hdd2;
address 192.168.24.102:7788;
meta-disk internal;
}
}
resource r1 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ## ←ここが重要
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd1;
disk /dev/hdd3;
address 192.168.24.101:7789;
meta-disk internal;
}
on cluster2 {
device /dev/drbd1;
disk /dev/hdd3;
address 192.168.24.102:7789;
meta-disk internal;
}
}
--------------------------------------------

meta-data作成
# drbdadm create-md r1

サービス開始
# service drbd start

確認
# service drbd start
Starting DRBD resources: [ d(r0) d(r1) s(r0) s(r1) n(r0) n(r1) ].
......[root@cluster1 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-06-26 16:40:17
0: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:0
1: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:20915952

◆ Primary/Primaryの確認

HAクラスタ側(/dev/hdd2)はエラーになることを確認
# drbdadm -- --overwrite-data-of-peer primary r0

RAC側(/dev/hdd3)はエラーにならないことを確認
# drbdadm -- --overwrite-data-of-peer primary r1

◆ 新構成
/etc/drbd.conf
--------------------------------------------
global {
usage-count yes;
}
resource r0 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd0;
disk /dev/hdd2;
address 192.168.24.101:7788;
meta-disk internal;
}
on cluster2 {
device /dev/drbd0;
disk /dev/hdd2;
address 192.168.24.102:7788;
meta-disk internal;
}
}
resource r1 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ## ←ここが重要
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd1;
disk /dev/hdd5;
address 192.168.24.101:7789;
meta-disk internal;
}
on cluster2 {
device /dev/drbd1;
disk /dev/hdd5;
address 192.168.24.102:7789;
meta-disk internal;
}
}
resource r2 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ## ←ここが重要
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd2;
disk /dev/hdd6;
address 192.168.24.101:7790;
meta-disk internal;
}
on cluster2 {
device /dev/drbd2;
disk /dev/hdd6;
address 192.168.24.102:7790;
meta-disk internal;
}
}
resource r3 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ## ←ここが重要
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd3;
disk /dev/hdd7;
address 192.168.24.101:7791;
meta-disk internal;
}
on cluster2 {
device /dev/drbd3;
disk /dev/hdd7;
address 192.168.24.102:7791;
meta-disk internal;
}
}
resource r4 {
protocol C;
startup {
wfc-timeout 60; ## 60 seconds.
degr-wfc-timeout 10; ## 10 seconds.
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ## ←ここが重要
}
syncer {
rate 300M;
al-extents 257;
}
on cluster1 {
device /dev/drbd4;
disk /dev/hdd8;
address 192.168.24.101:7792;
meta-disk internal;
}
on cluster2 {
device /dev/drbd4;
disk /dev/hdd8;
address 192.168.24.102:7792;
meta-disk internal;
}
}
--------------------------------------------

# insmod /lib/modules/2.6.18-92.1.6.el5/extra/drbd82/drbd.ko
# drbdadm create-md all
# service drbd start

ノード1
# drbdadm -- --overwrite-data-of-peer primary r0
# drbdadm -- --overwrite-data-of-peer primary r1
# drbdadm -- --overwrite-data-of-peer primary r2
# drbdadm -- --overwrite-data-of-peer primary r3
# drbdadm -- --overwrite-data-of-peer primary r4
ノード2
# drbdadm -- --overwrite-data-of-peer primary r1
# drbdadm -- --overwrite-data-of-peer primary r2
# drbdadm -- --overwrite-data-of-peer primary r3
# drbdadm -- --overwrite-data-of-peer primary r4