連載
» 2016年01月19日 05時00分 公開

DRBDの仕組みを学ぶ(5):障害時にサブサーバへ自動で切り替える「高可用性WordPressシステム」の作り方 前編 (3/4)

[澤田健,株式会社サードウェア]

DRBD設定ファイルを用意する

 DRBDのインストールが完了したら、DRBDの設定を行います。

 今回はリソースを二つ使用するので、設定ファイルも二つ必要となります。設定ファイル「r0.res」と「r1.res」を、/etc/drbd.d配下に新規作成します。設定ファイルは一号機、二号機の両サーバに配置してください。

 「/etc/drbd.d/r0.res」「/etc/drbd.d/r1.res」の記述例は以下の通りです。

resource r0 {
    net {
        protocol        C;
    }
    volume 0 {
        device          minor 0;
        disk            /dev/sda5;
        meta-disk       internal;
    }
    on wp-ha1 {
        address 10.0.1.1:7788;
    }
    on wp-ha2 {
        address 10.0.1.2:7788;
    }
}

resource r1 {
    net {
        protocol        C;
    }
    volume 1 {
        device          minor 1;
        disk            /dev/sda6;
        meta-disk       internal;
    }
    on wp-ha1 {
        address 10.0.1.1:7789;
    }
    on wp-ha2 {
        address 10.0.1.2:7789;
    }
}

 r0.resとr1.resの中身は、リソースの名前、デバイス名、パーディション/ディスク名、ポート番号が異なります。特にポート番号が重要です。これは、別々のポートでデータレプリケーションを行うためです。

メタデータを作成する

 続いて、「メタデータ」を作成します。メタデータとはDRBDの情報が書き込まれている情報管理ファイルです。こちらも一号機、二号機の両方で、drbdadm create-mdコマンドを実行して作成します。

# drbdadm create-md r0
# drbdadm create-md r1

 「New drbd meta data block successfully created.」と表示されることを確認してください。

DRBDを起動する

 DRBD起動までの準備はこれで完了です。DRBDを起動しましょう。

 drbdadm upコマンドを一号機、二号機の両方で実行します。

# drbdadm up r0
# drbdadm up r1

 catコマンドで、DRBDの接続確認を行います。

# cat /proc/drbd

photo DRBDの接続確認を行うと表示される文字列の一部

 この文字列より、二つのリソースの“CS”が「Connected」となっていることを確認してください。

DRBDを初期化する

 一号機(プライマリ機)、二号機(セカンダリ機)それぞれで、DRBDの初期化を行います。

 DRBDの初回起動後は、まだデータの同期が行われていません。drbdadm --forceコマンドによる初期化作業によって、初回の同期を実施します。こちらはプライマリ機にする一号機のみで実行します。データ量によっては、初期同期完了まで時間がかかることもありますが、気長に待ってください。

# drbdadm --force primary r0
# drbdadm --force primary r1

同期状況を確認する

 同期の進行状況は、catコマンドで確認できます。なお、watchコマンドを併用すると、リアルタイムに同期状況を確認できます。

# cat /proc/drbd

# watch cat /proc/drbd

photo コマンドを実行すると「初期同期確認状況」が表示されます。cs:Connected、ro:Primary/Secondaryになったら初期の同期は完了です
 ※ここからは特記がない限り、一号機(プライマリ機)のみの作業で構いません。

DRBDデータ領域をフォーマットする

 初期の同期が完了したら、DRBDのデータ領域をフォーマットします。こちらは一号機(プライマリ機)のみで実行します。以下の例ではxfsでフォーマットしましたが、xfs以外のファイルシステムも指定できます。

# mkfs.xfs /dev/drbd0
# mkfs.xfs /dev/drbd1

DRBD領域へデータをコピーする

 DRBDの領域(リソース)が二つ確保できましたが、中身はまだ空っぽです。そこで、二つの領域にインストール済みのWordPressのデータと、MariaDBのデータをコピーする必要があります。

 WordPressとMariaDBのデータ領域は、それぞれ以下の通りです。

  • WordPress:/var/www/html/wordpress
  • MariaDB:/var/lib/mysql

 これらのディレクトリをDRBDの領域にコピーします。この作業は一号機(プライマリ機)のみで実行します。

 まず、対象のデータを一時退避します。

# cd /var/www/html
# mv wordpress wordpress.org
# mkdir wordpress
# cd /var/lib
# mv mysql mysql.org
# mkdir mysql

 次にDRBD領域をマウントします。マウントと一緒に、WordPressのディレクトリにはApacheの権限を、MariaDBのディレクトリにはMySqlの権限を付与します。

# mount /dev/drbd0 /var/www/html/wordpress
# chown apache:apache /var/www/html/wordpress
# mount /dev/drbd1 /var/lib/mysql 
# chown mysql:mysql /var/lib/mysql

 退避したデータをコピーします。

# cd /var/www/html/wordpress.org
# cp -a * ../wordpress
# cd /var/lib/mysql.org
# cp -a * ../mysql

 DRBDデータの同期が完了するまで待ちます。前述したwatch cat /proc/drbdコマンドを実行して、「cs」ステータスの数値の増加が止まったら、DRBDのデータ同期が完了したことを示します。

 同期が完了したら、DRBD領域をアンマウントします。

# umount /var/www/html/wordpress
# umount /var/lib/mysql

 アンマウント後、DRBDをSecondaryに降格させます。

# drbdadm secondary r0
# drbdadm secondary r1

 最後にDRBDを停止します。この手順は、一号機(プライマリ機)、二号機(セカンダリ機)の両サーバで実行してください。

# drbdadm down r0
# drbdadm down r1

 以後、DRBDは次ページでインストールする「Pacemaker」で起動、停止を制御することになります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。