先日(といっても、結構時間が経ってしまいましたが・・・)、Linuxサーバを冗長化する機会がありました。
その際に、ドキュメントを用意したのですが、一部異なるアプローチをとったところがあったので、そのあたりをメモしておこうと思います。
ドキュメントはこちら
HAクラスタ構築手順書
其の一 DRBDパーティション
まず、DRBDでネットワークミラーリングを構築するのですが、マニュアルでは第2SCSIディスクを想定していますが、今回は、ディスクが一つしかないので、既存のディスクにパーティションを作成する必要がありました。
空き領域に新たなパーティションを作成するのですが、/(root)パーティションで全部使っていて空きは無かったので、やむなく再インストール・・・
せっかくですので、この機会に自由にサイズ変更をできるというLVMでパーティションを作成し、DRBDをセットアップです。
DRDBパーティション(論理ボリューム)の作成
$ sudo lvcreate -L 10G -n drbd main
$ sudo vi /etc/drbd.conf
resource r0 {
protocol C;
incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error panic;
}
syncer {
rate 100M;
group 1;
al-extents 257;
}
on host1 {
device /dev/drbd0;
disk /dev/main/drbd;
address 192.168.0.221:7788;
meta-disk internal;
}
on host2 {
device /dev/drbd0;
disk /dev/main/drbd;
address 192.168.0.231:7788;
meta-disk internal;
}
}
其の二 ミラーリングデータはシンボリックリンクで
既存のアプリケーションがあるため、設定ファイル等はなるべく変更したくありません。
そこで、設定ファイルはそのままに、データディレクトリをシンボリックリンクで参照するようにしました。
アプリケーション及びWebデータ
$ sudo -u user mkdir /data/application
$ sudo -u user ln -s /data/application /home/rms/application
$ sudo -u user tar cpzf /home/user/old_htdocs.tar.gz /home/user/htdocs
$ sudo -u user mv /home/user/htdocs /data/user_htdocs
$ sudo -u user ln -s /data/user_htdocs /home/user/htdocs
$ sudo ls -l /home/user
$ sudo ls -l /data
MySQLデータ
$ sudo -u mysql tar cpzf /home/mysql/old_data.tar.gz /home/mysql/data
$ sudo -u mysql mv /home/mysql/data /data/mysql_data
$ sudo -u mysql ln -s /data/mysql_data /home/mysql/data
$ sudo ls -l /home/mysql
$ sudo ls -l /data
その他、heartbeat等はマニュアルどおりでおおむねいけました。
マニュアルを作成してくれたK氏には感謝です!
DRBD/hearbeatでサーバ冗長化は、手軽にできてかなりおススメです!
自動でフェイルオーバー/フェイルバックする様子には、本気で感動しました。
この機会に(?)、是非挑戦してみてください。
参考書籍: