サーバー間でミラーリングする(DRBD)
カテゴリ: Linux
執筆者: fujimi
updated: 2009/03/30
ページビュー(2482)
- データをサーバ単位で二重化する
- DRBDのインストール・設定・運用方法を紹介する
- ファイルシステムの基本的な知識がある
- linuxのコマンドに慣れている
2.1 テスト環境
- CentOS5.1(32bitバージョン)
- データの同期速度が早い
DRBDは、稼動側のサーバ(Primary)と待機側のサーバ(Secondary)の間で、データを同期させるソフトウェアである。稼動側のサーバにデータを書き込むと、待機側のサーバにも書き込まれる。ただし、待機側のサーバのデータは、Primaryにならない限り、読み書きできない。
- DRBDをインストールする(yumコマンド)
# yum install drbd
- カーネルのカーネルのバージョンを確認する
[hogehoge@hostname ]$ uname -a
Linux nfs2.hoge.jp 2.6.18-92.1.6.el5 #1 SMP Wed Jun 25 13:49:24 EDT 2008 i686 i686 i386 GNU/Linux
Linux nfs2.hoge.jp 2.6.18-92.1.6.el5 #1 SMP Wed Jun 25 13:49:24 EDT 2008 i686 i686 i386 GNU/Linux
- kmod-drbdをインストールする
# yum install kmod-drbd
- 再起動時に自動的にdrbdが立ち上がるようにする
# chkconfig --list |grep drbd
drbd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# /sbin/chkconfig drbd on
# /sbin/chkconfig --list
# /sbin/chkconfig --list
drbd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
6.1 稼動側
- デバイスファイルがあるか確認する
# ls /dev/drbd*
以下のように表示されればよい/dev/drbd0 /dev/drbd10 /dev/drbd12 /dev/drbd14 /dev/drbd2 /dev/drbd4 /dev/drbd6 /dev/drbd8
/dev/drbd1 /dev/drbd11 /dev/drbd13 /dev/drbd15 /dev/drbd3 /dev/drbd5 /dev/drbd7 /dev/drbd9
/dev/drbd1 /dev/drbd11 /dev/drbd13 /dev/drbd15 /dev/drbd3 /dev/drbd5 /dev/drbd7 /dev/drbd9
- /dataを作成する
# mkdir /data
- 設定ファイルを作成する
# man drbd.conf
# vi /etc/drbd.conf
#
# please have a a look at the example configuration file in
# /usr/share/doc/drbd/drbd.conf
#
resource r0 {
protocol B;
#handlers {
#incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
#pri-on-incon-degr-cmd "echo o > /proc/sysrq-trigger ; halt -f";
#}
#startup {
#wfc-timeout 120;
#degr-wfc-timeout 120; # 2 minutes.
#}
disk {
#on-io-error panic;
on-io-error pass_on;
}
syncer {
rate 700000K;
}
on nfs1.example.com {
device /dev/drbd0;
disk /dev/sda4;
address 192.168.5.81:7788;
meta-disk internal;
}
on nfs2.example.com {
device /dev/drbd0;
disk /dev/sda4;
address 192.168.5.82:7788;
meta-disk internal;
}
}
- protocol
- A データを自分のディスクとTCP送信バッファに送った時点で完了
- B データを自分のディスクと相手ノードのバッファキャッシュに送った時点で完了
- C データを自分と相手のディスクに送った時点で完了
- rate 700000K; ← 転送速度。7000000Kが最大値。
- device /dev/drbd0; ← ファイルを置くデバイス
- disk /dev/sda4; ← 同期するパーティション
- address 192.168.5.81:7788; ← 同期に用いるLANポート
- meta-disk internal; ← メタファイルの置き場所。internalはデータと同じ領域にメタファイルを置くことを示す
- protocol
6.2 待機側
- 設定ファイルを作成する
最初に、稼動側のサーバと待機側のサーバのデータを同期する。その際、DRBD用のmetaファイルを作成する。そして、データを保存する領域をext3でフォーマットする
7.1 稼動側
- DRBDを起動する
# /etc/init.d/drbd start
- Primaryに設定する。最初に起動すると、metaデータを作成する。そして、データを同期する。
# /sbin/drbdadm -- --overwrite-data-of-peer primary r0
- Primaryになっていることを確認する
# cat /proc/drbd
version: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 build by buildsvn@c5-i386-build, 2008-06-26 19:22:58
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate B r---
ns:3186224 nr:0 dw:3243296 dr:561230 al:315 bm:48 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:18267 misses:25 starving:0 dirty:0 changed:25
act_log: used:0/127 hits:810509 misses:315 starving:0 dirty:0 changed:315
version: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 build by buildsvn@c5-i386-build, 2008-06-26 19:22:58
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate B r---
ns:3186224 nr:0 dw:3243296 dr:561230 al:315 bm:48 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:18267 misses:25 starving:0 dirty:0 changed:25
act_log: used:0/127 hits:810509 misses:315 starving:0 dirty:0 changed:315
7.2 待機側
- DRBDを起動する
# /etc/init.d/drbd start
- Secondaryになっていることを確認する
$ cat /proc/drbd
version: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 build by buildsvn@c5-i386-build, 2008-06-26 19:22:58
0: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate B r---
ns:0 nr:3186224 dw:3186224 dr:0 al:0 bm:25 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:18267 misses:25 starving:0 dirty:0 changed:25
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 build by buildsvn@c5-i386-build, 2008-06-26 19:22:58
0: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate B r---
ns:0 nr:3186224 dw:3186224 dr:0 al:0 bm:25 lo:0 pe:0 ua:0 ap:0
resync: used:0/61 hits:18267 misses:25 starving:0 dirty:0 changed:25
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
7.3 稼動側
- DRDBデバイスを/data以下にマウントする
# mount -t ext3 /dev/drbd0 /data
- マウントしたディレクトリが存在するか確認する
# ls -la /drbd
The DRBD User's Guide
ニックネーム:fujiyama
自己紹介:
都内大学4年生です。 プログラミングとサーバ関係のレシピを書いてます。
都内大学4年生です。 プログラミングとサーバ関係のレシピを書いてます。



