障害時にサブサーバへ自動で切り替える「高可用性WordPressシステム」の作り方 前編:DRBDの仕組みを学ぶ(5)(3/4 ページ)
サービスを止めてはならない環境で活躍する冗長化支援ツール「DRBD」。今回は、CMSツールとして多くのWebサイトで利用されている「WordPressサーバ」の高可用性をDRBDで確保する方法を解説します。前編は、必要なソフトウェアのインストールと初期設定までを説明します。
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
この文字列より、二つのリソースの“CS”が「Connected」となっていることを確認してください。
DRBDを初期化する
一号機(プライマリ機)、二号機(セカンダリ機)それぞれで、DRBDの初期化を行います。
DRBDの初回起動後は、まだデータの同期が行われていません。drbdadm --forceコマンドによる初期化作業によって、初回の同期を実施します。こちらはプライマリ機にする一号機のみで実行します。データ量によっては、初期同期完了まで時間がかかることもありますが、気長に待ってください。
# drbdadm --force primary r0 # drbdadm --force primary r1
同期状況を確認する
同期の進行状況は、catコマンドで確認できます。なお、watchコマンドを併用すると、リアルタイムに同期状況を確認できます。
# cat /proc/drbd
# watch cat /proc/drbd
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.
関連記事
- DRBD(Distributed Replicated Block Device)とは何か
障害監視ツールなどと一緒に使うことで、サービスの継続提供を助けるDRBD。Linuxカーネルに統合されている機能ですが、上手に使いこなしているでしょうか? 本連載では、DRBDの動作や使いどころを順を追って紹介していきます。 - ミラーリングツール「DRBD」によるデータ保護
「Heartbeat」の適切な導入によってHAクラスタを構成し、Linux上で動作しているサービスの可用性を上げることができます。続いて、肝心のデータそのものを保護できるツール「DRBD」について紹介しましょう。 - ここが変わったCentOS 7──「新機能の概要とインストール」編
「CentOS 7」を皆さんどれだけ理解していますでしょうか。CentOS 7は、以前のバージョンから使い勝手がかなり変わりました。本連載では、今さら聞けない/おさらいしたいというインフラエンジニアに向け、CentOS 7の概要と基礎から活用Tipsまでを紹介していきます。 - DRBD+iSCSI夢の共演(前編)〜 Windowsドライブをミラーリングで保護 〜
Linux上で動作するオープンソースソフトウエア「DRBD」とiSCSIを組み合わせ、部門内のWindows端末のデータをバックアップするシステムを構築してみよう - OSSとLinuxで高可用システム構築を支援、サードウェア
- Sambaサーバー構築、5つのべからず− 若葉マーク管理者に捧げる
LinuxやUNIXをWindowsのファイルサーバー/プリントサーバーとしてしまうことができる「Samba」は、手軽にファイル共有環境を構築することができ、サーバー管理入門にもぴったりです。インターネット上の関連情報も豊富ですが、しっかり出所を確かめないと誤った設定を招く恐れがあります。