Professional Documents
Culture Documents
HAクラスタ構築手順書
HAクラスタ構築手順書
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
目次
1. はじめに ................................................................................................................................... 4
2. 構築環境 ................................................................................................................................... 4
2.1. OS ....................................................................................................................................... 4
2.2. ソフトウェア ..................................................................................................................... 4
3. ネットワーク構成..................................................................................................................... 5
4. DRBD........................................................................................................................................ 6
4.1. DRBD のインストール....................................................................................................... 6
4.2. DRDB パーティションの作成 ............................................................................................ 6
4.2.1. メタデータ用のパーティションについて ................................................................... 7
4.3. DRBD の設定 ..................................................................................................................... 7
4.3.1. hosts ファイルの編集 .................................................................................................. 7
4.3.2. 設定ファイルのコピー ................................................................................................ 8
4.3.3. drbd.conf...................................................................................................................... 8
4.4. DRBD の起動 ................................................................................................................... 10
4.5. DRBD の動作確認 ............................................................................................................ 11
4.6. プライマリ状態への移行 ................................................................................................. 11
4.7. ファイルシステムの作成 ................................................................................................. 12
4.8. ミラーリングの動作確認 ................................................................................................. 13
5. MySQL.................................................................................................................................... 14
5.1. データディレクトリの変更.............................................................................................. 14
6. Apache..................................................................................................................................... 15
6.1. ドキュメントルートの変更.............................................................................................. 15
7. heartbeat ................................................................................................................................ 16
7.1. heartbeat のインストール ............................................................................................... 16
7.2. heartbeat の設定 .............................................................................................................. 16
7.2.1. 設定ファイルのコピー .............................................................................................. 16
7.2.2. ha.cf ........................................................................................................................... 17
7.2.3. haresources ............................................................................................................... 19
7.2.4. authkeys .................................................................................................................... 20
7.2.5. DRBD 自動起動の設定 .............................................................................................. 20
7.2.6. 外部スクリプトの設定 .............................................................................................. 21
7.2.7. 外部スクリプトの環境設定 ....................................................................................... 22
7.2.8. mysqld の生存確認方法 ............................................................................................. 22
7.2.9. httpd の生存確認方法 ................................................................................................ 22
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.3. heartbeat の起動 .............................................................................................................. 23
7.4. heartbeat の動作確認....................................................................................................... 24
7.4.1. フェイルオーバーの確認方法 ................................................................................... 24
7.4.2. フェイルダウンの確認方法 ....................................................................................... 24
8. 参考文献 ................................................................................................................................. 25
8.1. 書籍 .................................................................................................................................. 25
8.2. Web サイト ....................................................................................................................... 25
9. 付属ファイル .......................................................................................................................... 25
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
1. はじめに
本ドキュメントでは DRDB と heartbeat を使用して、Linux を使用して HA クラスタを
構築する手順を記述する。
2. 構築環境
HA クラスタを構築する環境を下記に記述する。
2.1. OS
使用する OS とそのディストリビューション・カーネルのバージョンを下記に記述する。
2.2. ソフトウェア
使用するソフトウェアとそのバージョンを下記に記述する。
♦ DRBD 0.7.24
♦ heartbeat 2.1.2
♦ kernel-devel 2.6.9-55.0.2.EL
♦ perl-libwww-perl-5.79-5
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
3. ネットワーク構成
下記のネットワーク構成で HA クラスタの環境を構築する。
仮想 IPeth0 192.168.1.70/24
LAN 192.168.1.0/24
heartbeat 用ネットワーク
LAN 10.0.0.0/8
項目 lemon.araboth.local orange.araboth.local
eth0 192.168.1.80/24 192.168.1.81/24
eth1(DRBD) 192.168.1.90/24 192.168.1.91/24
eth2(heartbeat) 10.0.0.1/8 10.0.0.2/8
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4. DRBD
DRBD のインストール・設定、および動作確認方法を記述する。
# fdisk /dev/sdb
1 メタデータ用 /dev/sdb1
2 データ用 /dev/sdb2
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4.2.1. メタデータ用のパーティションについて
メタデータを格納するパーティションは、ミラーリングするパーティション 1 個につき
128MB 以上の領域を必用とする。 また、データ用のパーティション先頭にメタデータを
配置することも可能である。その場合はメタデータ用のパーティションを作成する必用は
ない。
4.3.DRBD の設定
DRBD の設定方法について記述する。
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4.3.2. 設定ファイルのコピー
DRBD インストール時に下記の場所に設定ファイルのサンプルがインストールされる
ので、それを「/etc/drbd.conf/」にコピーしてから編集する。
4.3.3. drbd.conf
設定ファイルはプライマリノードとセカンダリノードで同じでなければならない。
resource r0 {
protocol C;
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error panic;
}
syncer {
rate 10M;
group 1;
al-extents 257;
}
on lemon.araboth.local {
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.1.81:7788;
meta-disk /dev/sdb1[0];
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
}
on orange.araboth.local {
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.1.91:7788;
meta-disk /dev/sdb1[0];
}
}
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4.4. DRBD の起動
下記のコマンドでプライマリノードとセカンダリノードの DRBD を起動。
..........
***************************************************************
- If the peer was available before the reboot the timeout will
(These values are for resource 'r0'; 0 sec -> wait forever)
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4.5. DRBD の動作確認
プライマリノード・セカンダリノードの DRBD を起動後、/proc/drbd を表示して
Secondary で起動していることを確認する。(st が両方 Secondary になっていることを確認)
# cat /proc/drbd
ns:0 nr:0 dw:0 dr:0 al:0 bm:1008 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured
4.6. プライマリ状態への移行
プライマリノードで下記のコマンドを実行し、プライマリ状態へ移行する。
DRBD の状態が「Primary/Secondary」になっていることを確認する。 プライマリ状態へ
移行後に同期処理がはじまるので終了するまで待つこと。
同期処理中は接続状態(cs)が「SyncTarget」になっており、同期処理が完了すると接続状態
が「Connected」、ローカルディスクの状態が「Consistent」に変化する。
# cat /proc/drbd
ns:0 nr:0 dw:0 dr:0 al:0 bm:1008 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4.7.ファイルシステムの作成
セカンダリノードとの同期が完了したら、DRBD の共有ディスク上への読み書きが可能に
なるのでファイルシステムを作成する。 ファイルシステムの作成はプライマリノードで行う
こと。(今回は ext3 で作成)
# mkfs.ext3 /dev/drbd0
ファイルシステムの作成後、作成したファイルシステムを「/data」にマウントする。
# mkdir /data
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
4.8.ミラーリングの動作確認
プライマリノードで共有ディスクにファイルを作成して、そのファイルがセカンダリノード
にミラーリングされていることを確認する。
# touch /data/test
プライマリノードをセカンダリ状態に変更。 もし「/dev/drbd0」をマウント解除できない
場合は「fuser」コマンドを使用してファイルシステムを使用しているプロセスを見つけ、その
プロセスを終了する。(fuser –km /data でファイルシステムを使用しているプロセスを終了)
# umount /dev/drbd0
# drbdadm secondary r0
セカンダリノードをプライマリ状態に変更し、共有ディスクをマウントする。 マウントした
共有ディスクにプライマリノードで作成したファイルが存在すればミラーリングは正常に動作
している。
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
5. MySQL
MySQL のデータを DRBD でミラーリングするために、MySQL のデータ保存場所を DRBD
の共有ディスクに変更する。(プライマリ・セカンダリ両方)
5.1.データディレクトリの変更
MySQL の設定ファイル「my.cnf」の「datadir」を共有ディスクへ変更する。
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
※MySQL が初期状態以外の場合、テーブルデータを共有ディスクに移動する必用がある。
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
6. Apache
Apache のデータを DRBD でミラーリングするために、Apache のドキュメントルートの
場所を共有ディスクに変更する。
(プライマリ・セカンダリ両方)
6.1.ドキュメントルートの変更
Apache の設定ファイル「httpd.conf」の「DocumentRoot」を共有ディスクに変更する。
DocumentRoot “/data/www/html”
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7. heartbeat
7.1.heartbeat のインストール
7.2.heartbeat の設定
設定ファイル「haresources・authkeys」はプライマリノード・セカンダリノードの両方に
同じものを配置する。
7.2.1. 設定ファイルのコピー
heartbeat インストール時に下記の場所に設定ファイルのサンプルがインストールされる
ので、それを「/etc/ha.d/」にコピーしてから編集する。
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.2.2. ha.cf
クラスタの設定は「ha.cf」ファイルで行う。 稼働系と待機系で個別の設定ファイルを
作成する。
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
baud 19200
ucast eth2 10.0.0.2
auto_failback on
watchdog /dev/watchdog
node lemon.araboth.local orange.araboth.local
ping 192.168.1.254
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
ファイル 2 待機系の ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
baud 19200
ucast eth2 10.0.0.2
auto_failback on
watchdog /dev/watchdog
node lemon.araboth.local orange.araboth.local
ping 192.168.1.254
※赤字の項目は環境によって変わるので、適切に読み替えること
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.2.3. haresources
共有リソースの定義を「haresources」で行う。
上記の設定では「lemon.araboth.local」を稼働系として、仮想 IP「192.168.1.70」を使用
して heartbeat を起動する。
稼働系が何らかの原因でダウンした場合、待機系が仮想 IP を引き継いでフェイルオーバーを
行う。 また、今回の構成では httpd・mysqld をクラスタリングするので、heartbeat から
クラスタリング対称となる httpd・mysqld を起動するため、httpd と mysqld の自動起動を
停止しておく必用がある。
※赤字の項目は環境によって変わるので、適切に読み替えること
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.2.4. authkeys
稼働系と待機系との間で行われる通信の認証方法を設定する。 今回の構成では稼働系
と待機系は物理的に安全なネットワーク内にあると仮定して CRC を使用する。
また、/etc/ha.d/authkeys ファイルのアクセス権は 600 に設定する必用がある。
auth 1
1 crc
※drbd-wait が「/root/drbd-wait」に存在するものとして記述します。
# cp /root/drbd-wait /etc/init.d/
# chmod +x /etc/init.d/drbd-wait
# chkconfig drbd on
# chkconfig drbd-wait on
# chkconfig on heartbeat
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.2.6. 外部スクリプトの設定
httpd・mysqld の生存チェックを行うため「/etc/ha.d/ha.cf」に外部スクリプトを設定する。
稼働系・待機系の「/etc/ha.d/ha.cf」の最後に下記の外部スクリプトの起動設定を記述する。
付属ファイル「check_primary・check_secondary・httpchk.pl」を「/usr/local/cluster」配下
にコピーする。(付属ファイルは「/root」配下にあるものと仮定する。
コマンド 1 稼働系
# mkdir /usr/local/cluster
# cp /root/check_primary /usr/local/cluster
# cp /root/httpchk.pl /usr/local/cluster
# chmod +x /usr/local/cluster/check_primary
# chmod +x /usr/local/cluster/httpchk.pl
コマンド 2 待機系
# mkdir /usr/local/cluster
# cp /root/check_primary /usr/local/cluster
# cp /root/httpchk.pl /usr/local/cluster
# chmod +x /usr/local/cluster/check_secondary
# chmod +x /usr/local/cluster/httpchk.pl
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.2.7. 外部スクリプトの環境設定
構築するサーバの環境に合わせて外部スクリプト(check_primary・check_secondary)の変数
を設定する。
No. 変数名 説明
1 INITWAIT 外部スクリプト起動時に待機する時間(秒)
2 INTERVAL 外部スクリプトを起動する周期(秒)
3 RETRYCOUNT 各種生存チェックが失敗した場合の再生存チェックの回数
4 RETRYINTERVAL 再生存チェックの周期(秒)
5 CVIP 仮想 IP
6 MYSQL_USER mysqld のチェックを行うユーザ(管理者権限が必用)
7 MYSQL_PASSWORD MYSQL_USER で指定したユーザのパスワード
8 HTTP_CHECK_SCRIPT http のステータスコードを確認する Perl スクリプト
9 HTTP_CHECK_URL http のステータスコードを確認する URL
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.3.heartbeat の起動
稼働系の heartbeat から起動する「httpd・mysqld」が起動していないことを確認し
下記のコマンドで heartbeat を起動する。
heartbeat のプロセス
httpd・mysqld のプロセス
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
7.4.heartbeat の動作確認
稼働系の httpd・mysqld を停止して、待機系がフェイルオーバーされることを確認する。
待機系がファイルオーバーされた後に稼働系の heartbeat を再度起動して、稼働系が
フェイルダウンすることを確認する。
1. ブラウザで「192.168.1.70」にアクセスして正常に表示されることを確認
2. 稼働系の mysqld を停止する(service mysql stop)
3. 待機系がフェイルオーバーされていることを確認
4. 稼働系の heartbeat を起動(service heartbeat start)
5. 稼働系がフェイルダウンされていることを確認
6. 稼働系の httpd を停止
7. 待機系がフェイルオーバーされていることを確認
8. 稼働系の heartbeat を起動(service heartbeat start)
9. 稼働系がフェイルダウンされていることを確認
7.4.1. フェイルオーバーの確認方法
稼働系の httpd・mysqld を停止して、稼働系に「httpd・mysqld」のプロセスが
存在しないことを確認する。 また、待機系に「httpd・mysqld」のプロセスが存在することと、
仮想 IP が引き継がれていることを確認する。
※ 仮想 IP が引き継がれていることの確認は「ifconfig -a」で行う。
7.4.2.フェイルダウンの確認方法
稼働系の heartbeat を起動して、待機系に「httpd・mysqld」のプロセスが存在しないこと
を確認する。 また、稼働系に「httpd・mysqld」のプロセスが存在することと、仮想 IP が
引き継がれていることを確認する。
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.
8. 参考文献
参考にした、書籍・Web サイトを下記に記述する。
8.1. 書籍
8.2.Web サイト
♦ http://d.hatena.ne.jp/yoshifumi1975/
♦ http://labs.unoh.net/2006/12/drbd.html
♦ http://femt.ddo.jp/modules/bwiki/index.php?Gentoo%20Linux%A4%CA%C0%B8%B3%E8
%2FDRBD
♦ http://www.blogkid.com/weblog/archives/001507.html
♦ http://cafelounge.net/dev/?Cluster%2FDRBD%2F8
♦ http://lefsy.com/w/?cmd=view;name=DRBD
♦ http://tsuttayo.sytes.net/drbd/drbd_setting.html
♦ http://www.wbc.co.jp/~drbd/
♦ http://www-06.ibm.com/jp/developerworks/linux/041112/j_l-halinux.shtml
9. 付属ファイル
下記のファイルを付属する。 また、下記のファイルのエンコーディングは EUC-JP とし
改行コードは LF とする。
♦ init-wait
♦ check_primary
♦ check_secondary
♦ httpchk.pl
Copyright (C) 2007 River Stone Co. Ltd. All Rights Reserved.