• 検索結果がありません。

Microsoft Word - HAクラスタ構築手順書.doc

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft Word - HAクラスタ構築手順書.doc"

Copied!
25
0
0

読み込み中.... (全文を見る)

全文

(1)
(2)

目次 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

(3)

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

(4)

1. はじめに 本ドキュメントでは DRDB と heartbeat を使用して、Linux を使用して HA クラスタを 構築する手順を記述する。 2. 構築環境 HA クラスタを構築する環境を下記に記述する。 2.1. OS 使用する OS とそのディストリビューション・カーネルのバージョンを下記に記述する。 ♦ Linux CentOS 4.5 ♦ Kernel 2.6.9-55.0.2.ELsmp 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

(5)

3. ネットワーク構成 下記のネットワーク構成で HA クラスタの環境を構築する。 項目 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 LAN 192.168.1.0/24 CentOS 4.5 lemon.araboth.local 稼働系(heartbeat) プライマリノード(DRBD) CentOS 4.5 orange.araboth.local 待機系(heartbeat) セカンダリノード(DRBD) eth0 192.168.1.80/24 eth1 192.168.1.81/24 eth0 192.168.1.90/24 eth1 192.168.1.91/24 DRBD 用ネットワーク eth2 10.0.0.1/8 eth2 10.0.0.2/8 LAN 10.0.0.0/8 heartbeat 用ネットワーク 仮想 IPeth0 192.168.1.70/24

(6)

4. DRBD

DRBD のインストール・設定、および動作確認方法を記述する。

4.1. DRBDのインストール

プライマリノードとセカンダリノードに DRBD を「yum コマンド」でインストールする。

# yum –y install drbd

# yum –y install kmod-drdb-smp

4.2. DRDBパーティションの作成 DRDB でミラーリングするパーティションは、IDE・SCSI など、どのような物理ディスク の上に置いても問題ない。 今回の DRDB でミラーリングするディスクパーティションは SCSI の第 2 ディスクを想定する。(/dev/sdb) 既存の IDE に物理パーティションを作成する場合や、第二の IDE ディスクをミラーリング する場合は、適切に設定を読み替えること。 またパーティションの設定には fdisk コマンド を使用する。 この時点ではパーティションを作成するのみであり、ファイルシステムを作成 する必用はない。 # fdisk /dev/sdb No. パーティション デバイス 1 メタデータ用 /dev/sdb1 2 データ用 /dev/sdb2 ※DRDB のパーティションについては書籍「Linux アドバンスト ネットワークサーバ構築ガイ ド」の 365P を参考にすること。

(7)

4.2.1. メタデータ用のパーティションについて メタデータを格納するパーティションは、ミラーリングするパーティション 1 個につき 128MB 以上の領域を必用とする。 また、データ用のパーティション先頭にメタデータを 配置することも可能である。その場合はメタデータ用のパーティションを作成する必用は ない。 4.3.DRBDの設定 DRBD の設定方法について記述する。 4.3.1. hostsファイルの編集 DNS サーバへの名前解決によるパフォーマンス低下を避けるため、hosts ファイルにミラー リング元のホストとミラーリング先のホストを追加する。

# Do not remove the following line, or various programs # that require network functionality will fail.

127.0.0.1 lemon.araboth.local lemon localhost.localdomain localhost 192.168.1.91 orange.araboth.local orange

# Do not remove the following line, or various programs # that require network functionality will fail.

127.0.0.1 orange.araboth.local orange localhost.localdomain localhost 192.168.1.81 lemon.araboth.local lemon

(8)

4.3.2. 設定ファイルのコピー

DRBD インストール時に下記の場所に設定ファイルのサンプルがインストールされる ので、それを「/etc/drbd.conf/」にコピーしてから編集する。

No. ファイル名 コピー元 コピー先

1 drbd.conf /usr/share/doc/drbd-0.7.24/drbd.conf /etc/drbd.conf

4.3.3. 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 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];

(9)

} on orange.araboth.local { device /dev/drbd0; disk /dev/sdb2; address 192.168.1.91:7788; meta-disk /dev/sdb1[0]; } }

(10)

4.4. DRBDの起動 下記のコマンドでプライマリノードとセカンダリノードの DRBD を起動。 # service drbd start 対称となる DRBD が見つからない場合、下記のメッセージが表示されるが「yes」と入力 してエンターキーを押下する。 # service drbd start Starting DRBD resources: [ d0 s0 n0 ]. ... *************************************************************** DRBD's startup script waits for the peer node(s) to appear. - In case this node was already a degraded cluster before the reboot the timeout is 120 seconds. [degr-wfc-timeout] - If the peer was available before the reboot the timeout will expire after 0 seconds. [wfc-timeout]

(These values are for resource 'r0'; 0 sec -> wait forever) To abort waiting enter 'yes' [ 25]:

(11)

4.5. DRBDの動作確認

プライマリノード・セカンダリノードの DRBD を起動後、/proc/drbd を表示して

Secondary で起動していることを確認する。(st が両方 Secondary になっていることを確認)

# cat /proc/drbd

version: 0.7.24 (api:79/proto:74)

SVN Revision: 2875 build by buildcentos@build-i386, 2007-05-23 09:30:50 0: cs:WFConnection st:Secondary/Secondary ld:Inconsistent

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」に変化する。

# drbdadm -- --do-what-I-say primary all # cat /proc/drbd

version: 0.7.24 (api:79/proto:74)

SVN Revision: 2875 build by buildcentos@build-i386, 2007-05-23 09:30:50 0: cs:WFConnection st:Primary/Secondary ld:Consistent

ns:0 nr:0 dw:0 dr:0 al:0 bm:1008 lo:0 pe:0 ua:0 ap:0 1: cs:Unconfigured

(12)

4.7.ファイルシステムの作成 セカンダリノードとの同期が完了したら、DRBD の共有ディスク上への読み書きが可能に なるのでファイルシステムを作成する。 ファイルシステムの作成はプライマリノードで行う こと。(今回は ext3 で作成) # mkfs.ext3 /dev/drbd0 ファイルシステムの作成後、作成したファイルシステムを「/data」にマウントする。 # mkdir /data

(13)

4.8.ミラーリングの動作確認 プライマリノードで共有ディスクにファイルを作成して、そのファイルがセカンダリノード にミラーリングされていることを確認する。 # touch /data/test プライマリノードをセカンダリ状態に変更。 もし「/dev/drbd0」をマウント解除できない 場合は「fuser」コマンドを使用してファイルシステムを使用しているプロセスを見つけ、その プロセスを終了する。(fuser –km /data でファイルシステムを使用しているプロセスを終了) # umount /dev/drbd0 # drbdadm secondary r0 セカンダリノードをプライマリ状態に変更し、共有ディスクをマウントする。 マウントした 共有ディスクにプライマリノードで作成したファイルが存在すればミラーリングは正常に動作 している。

# drbdadm -- --do-what-I-say primary all # mount /dev/drbd0 /data

(14)

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 が初期状態以外の場合、テーブルデータを共有ディスクに移動する必用がある。

(15)

6. Apache Apache のデータを DRBD でミラーリングするために、Apache のドキュメントルートの 場所を共有ディスクに変更する。(プライマリ・セカンダリ両方) 6.1.ドキュメントルートの変更 Apache の設定ファイル「httpd.conf」の「DocumentRoot」を共有ディスクに変更する。 DocumentRoot “/data/www/html” ※WebObujects の場合、付属の apache.conf も修正する必用がある。 ※ScriptAlias のパスも必用に応じて修正すること。

(16)

7. heartbeat

7.1.heartbeatのインストール

# yum –y install heartbeat

7.2.heartbeatの設定 設定ファイル「haresources・authkeys」はプライマリノード・セカンダリノードの両方に 同じものを配置する。 7.2.1. 設定ファイルのコピー heartbeat インストール時に下記の場所に設定ファイルのサンプルがインストールされる ので、それを「/etc/ha.d/」にコピーしてから編集する。 No. ファイル名 コピー元 コピー先

1 ha.cf /usr/share/doc/heartbeat2.1.2/ha.cf /etc/ha.d/ha.cf 2 haresources /usr/share/doc/heartbeat2.1.2/haresources /etc/ha.d/haresources 3 authkeys /usr/share/doc/heartbeat2.1.2/authkeys /etc/ha.d/authkeys

(17)

7.2.2. ha.cf クラスタの設定は「ha.cf」ファイルで行う。 稼働系と待機系で個別の設定ファイルを 作成する。 ファイル 1 稼働系の 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

(18)

ファイル 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

(19)

7.2.3. haresources

共有リソースの定義を「haresources」で行う。

lemon.araboth.local IPaddr::192.168.1.70/24/eth0 drbddisk Filesystem::/dev/drbd0::/data::ext3 mysqld httpd 上記の設定では「lemon.araboth.local」を稼働系として、仮想 IP「192.168.1.70」を使用 して heartbeat を起動する。 稼働系が何らかの原因でダウンした場合、待機系が仮想 IP を引き継いでフェイルオーバーを 行う。 また、今回の構成では httpd・mysqld をクラスタリングするので、heartbeat から クラスタリング対称となる httpd・mysqld を起動するため、httpd と mysqld の自動起動を 停止しておく必用がある。 # chkconfig –del httpd # chkconfig –del mysqld

(20)

7.2.4. authkeys 稼働系と待機系との間で行われる通信の認証方法を設定する。 今回の構成では稼働系 と待機系は物理的に安全なネットワーク内にあると仮定して CRC を使用する。 また、/etc/ha.d/authkeys ファイルのアクセス権は 600 に設定する必用がある。 auth 1 1 crc 7.2.5. DRBD自動起動の設定 書籍「Linux アドバンスト ネットワークサーバ構築ガイド」の「P444 7.5.9」の問題を回避 するために付属ファイル「drbd-wait」をサービスとして登録し、heartbeart より前に起動する ように設定する。(稼働系・待機系の両方に対して行う) ※drbd-wait が「/root/drbd-wait」に存在するものとして記述します。 # cp /root/drbd-wait /etc/init.d/ # chmod +x /etc/init.d/drbd-wait # chkconfig ---del drbd # chkconfig –-add drbd # chkconfig drbd on # chkconfig –del drbd-wait # chkconfig –add drbd-wait # chkconfig drbd-wait on # chkconfig –del heartbeat # chkconfig –add heartbeat # chkconfig on heartbeat

(21)

7.2.6. 外部スクリプトの設定

httpd・mysqld の生存チェックを行うため「/etc/ha.d/ha.cf」に外部スクリプトを設定する。 稼働系・待機系の「/etc/ha.d/ha.cf」の最後に下記の外部スクリプトの起動設定を記述する。

ファイル 3 稼働系(lemon.araboth.local)の ha.cf respawn root /usr/local/cluster/check_primary

ファイル 4 待機系(orange.araboth.local)の ha.cf respawn root /usr/local/cluster/check_secondary

付属ファイル「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

(22)

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 7.2.8. mysqldの生存確認方法 外部スクリプト内で下記のコマンドを実行して結果が“mysqld is alive”以外の場合 mysqld が生存していないと判定する。

# mysqladmin –u root –password password PING 2> /dev/null

7.2.9. httpdの生存確認方法

外部スクリプト内で「httpchk.pl」を呼び出し、HTTP_CHECK_URL で指定された URL に アクセスしステータスコードが 200 以外の場合、httpd が生存していないと判定する。

(23)

7.3.heartbeatの起動

稼働系の heartbeat から起動する「httpd・mysqld」が起動していないことを確認し 下記のコマンドで heartbeat を起動する。

# service heartbeat start

heartbeat 起動後、しばらくすると「httpd・mysqld」が起動するので確認する。 稼働系の heartbeat の起動を確認したら、次は待機系の heartbeat を起動する。 起動方法は稼働系と 同様。 待機系の場合は「httpd・mysqld」が起動していないことを確認する。

heartbeat のプロセス

(24)

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 が 引き継がれていることを確認する。

(25)

8. 参考文献 参考にした、書籍・Web サイトを下記に記述する。 8.1. 書籍 ♦ Linux アドバンストネットワークサーバ構築ガイド HA サーバ構築編 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

参照

関連したドキュメント

LicenseManager, JobCenter MG/SV および JobCenter CL/Win のインストール方法を 説明します。次の手順に従って作業を行ってください。.. …

・「下→上(能動)」とは、荷の位置を現在位置から上方へ移動する動作。

あらまし MPEG は Moving Picture Experts Group の略称であり, ISO/IEC JTC1 におけるオーディオビジュアル符号化標準の

平成 26 年の方針策定から 10 年後となる令和6年度に、来遊個体群の個体数が現在の水

北海道の来遊量について先ほどご説明がありましたが、今年も 2000 万尾を下回る見 込みとなっています。平成 16 年、2004

当監査法人は、我が国において一般に公正妥当と認められる財務報告に係る内部統制の監査の基準に

ここで, C ijkl は弾性定数テンソルと呼ばれるものであり,以下の対称性を持つ.... (20)

Medial