おはようございます、牧野です。今週から朝型生活に切り替えました。できるだけがんばって続 けていこうと思っています。
さて、今回はDRBDについてです。
DRBDについて簡単に説明すると、ハードディスクのRAID1(ミラーリング)を、ネットワークを介して離れた場所にあるマシンのハードディスクとできるようにするためのソフトです。
DRBDはオープンソースなので、高価な機器を買わなくてもよく、予めRAIDを組んでいなくてもミラーリングを実現できます。
さらにheartbeatと、データベースやNFSといった別サービスを組み合わせることにより、一方のマシンにトラブルが発生した場合に自動的にもう一方のマシンを使うようにする、というような冗長化システムを実現できます。
詳しくはこちらを見て下さい。英語のページの方が説明が充実しています。
http://www.drbd.jp/
ただ、いくつか制約があります。
・カーネルのバージョンに依存
カーネルモジュールを使用するため、カーネルがバージョンアップすると再インストールが必要です。
・ブロックデバイスごとの同期
RAIDなこともあり、ブロックデバイス丸ごとの同期になります。特定のディレクトリ以下だけ、という指定はできない場合もあります。
あとは、設定、検証が多少面倒とか。。
バージョンの違い(0.7系と0.8系)で、できることやコマンドが若干違ったりもします。
今回は、自分のCentOS環境でDRBDをインストールし、動作確認するところまでです。検証環境の構築にけっこう時間がかかってしまいました。。heartbeat等との組み合わせはまた後日、ということで。。。
最初、VMwareのCentOS環境を1つ作って、colinuxのCentOSと試そうとしたのですが、colinuxの方でyumインストールのカーネルモジュールが動かず…。colinuxのカーネルのバージョンとyumでインストールしたモジュールの対応カーネルバージョンが違っていたのが原因でした。
結局、VMwareでCentOS環境を2つ用意しました。CentOSは手元にあった4.5を使用しています。
1.yumでdrbdとkmod-drbdをインストール
# yum install drbd kmod-drbd
カーネルも更新された場合は再起動します。
2.検証用ハードディスクの作成
今回は、qemu、VMX Editor、VMware Playerを使って環境を作りました。
VMX Editorまたはqemuコマンドで新たにハードディスクを2つ作り、各VMware Player用設定ファイルを変更します。
最初、ディスク容量を100MBで作ったら動かず、1GBで作り直しました。
0.7系ではdrbdのメタデータ領域として、128MB必要です。
次に設定ファイルを変更します。
自分の設定ファイル vm01.vmx
#worte by vmx-editor
.encoding = "Shift_JIS"
config.version = "8"
virtualHW.version = "4"
numvcpus = "1"
nvram = "nvram"
memsize = "300"
displayName = "vm01"
guestOS = "otherlinux"
Ethernet0.present = "TRUE"
Ethernet0.connectionType = "bridged"
logging = "FALSE"
usb.present = "FALSE"
Floppy0.present = "FALSE"
Sound.present = "FALSE"
ide0:0.present = "TRUE"
ide0:0.devicetype = "disk"
ide0:0.filename = "vm01.vmdk"
ide0:0.startConnected