守破離でいこう! -Let's go with SyuHaRi!-

2007/10/05

CentOS4.5にて、DRBD/hearbeatでサーバ冗長化

先日(といっても、結構時間が経ってしまいましたが・・・)、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でサーバ冗長化は、手軽にできてかなりおススメです!
自動でフェイルオーバー/フェイルバックする様子には、本気で感動しました。
この機会に(?)、是非挑戦してみてください。

参考書籍:

ラベル:

naoki 18:32
HaloScan: |

0 Comments:

Add a comment