Contents
このドキュメントは私(筆者)自身のオリジナルのものではありません。私がこのドキュメントを作成したのは、作業に取り組むユーザーの皆さんに何らかの方法で協力できたらと考えたからです。私が提供する「著作物」とは、Rudy Pawulによる 入門 ページの改訂版です。また、ほかのHA v1/v2ドキュメントから得られた断片的な情報を1つのドキュメントにまとめました。開発者を悩ませたり、メーリングリスト上で単純な質問が繰り返されたりすることがないよう、初めてのユーザーの方にはHeartbeat 2の入門情報をご紹介します。
このドキュメントは、Heartbeat 2のクイックスタートの一種です。上述のとおり、ここには、ほかのドキュメントから得られた断片的な情報が含まれていますので、ドキュメントが一致していないことがあります。正しく動作しない場合や、詳細を知りたい方は、Heartbeatバージョン2入門をご参照ください。
Heartbeat 2を初めて使うユーザー向けに、Heartbeat 2の簡単な構成についてご説明することが目的です。英語は私の母語で はありませんので、間違いがありましたら、ご遠慮なくご指摘ください。
「クラスタ」は、 同名のソフトウェアパッケージが生成した2台以上のコンピュータ(ノード)間の「ハートビート」を通じて設定されます。
ハイアベイラビリティLinuxプロジェクトの基本的な目的は、以下のとおりです。
Heartbeat 2は、以下の重要な機能を備えています。
Heartbeat v2では、「mon」や「ldirectord」などを使用せずにリソースを監視できる
ノード: OSを実行するインスタンス
リソース: 高可用性を確保したいサービスまたはファシリティ
RA: リソースエージェント
CRM:
以下のものが必要です。
最大限のハイアベイラビリティ
単一障害点を避けることが設定時の全体構想です。また、ノード間で複数の通信方法を使用することもお勧めします。メディアスタックが単一障害点になってしまいますので、Ethernetケーブルや1種類のメディアだけを使用することがないようにしてください。
このクイックスタートでは、Debian UnstableでのHeartbeat 2の完全インストール、構成、複数のリソースについて説明します。クイックスタートの目的を果たすため、簡単で一般的な構成を紹介します。共有IPでApache 2のハイアベイラビリティなサービスを提供します(アクティブ/パッシブ)。この構成にはモニタが含まれ、リソースの開始はグループを使用して実行されます。このドキュメントを読み終えるころには、Heartbeat 2の基本がお分かりいただけるでしょう。
ここでは、分かりやすく、ホスト間で1種類のメディア(Ethernetケーブル)を使用します。
Heartbeatは、以下の場所で入手できます。
ソースからビルドすることもできます。
tar -xvzf /path_to_downloaded_tarball/heartbeat-x.x.x ./ConfigureMe configure make && make install
もしくは、入手可能なRPMまたは.debバイナリを使用します。Gentooを使用する場合は、emerge を実行するだけです。
私(筆者)はDebian用の.debバイナリを使用したため、以下の行を /etc/apt/sources.listに追加しました。
deb http://ftp.belnet.be/debian/ unstable main contrib non-free
続いて、以下を実行しました。
apt-get update apt-get install heartbeat-2
Heartbeat v2の構成はHeartbeat v1と比べると多少面倒ですが、Heartbeat v1の構成でHeartbeat v2を使用することも可能です。v1の構成を試してみたい場合は、以下をご覧ください。
3つのファイルを構成する必要があります。以下のファイルを作成します。
HA v1 |
HA v2 |
目的 |
備考 |
/etc/ha.d/authkeys |
/etc/ha.d/authkeys |
ノードの認証 |
どちらのバージョンでも同じ |
/etc/ha.d/ha.cf |
/etc/ha.d/ha.cf |
Heartbeatの全般構成 |
HA v2:CRMを使用可能と定義する必要がある |
/etc/ha.d/haresources |
/var/lib/heartbeat/crm/cib.xml |
リソースの構成 |
別の場所 |
authkeysファイルを使用して、クラスタのメンバーを認証します。以下の3種類の認証方法を使用できます。
この例では、md5を使用しています。authkeysについて詳しく知りたい場合は、 このドキュメントを参照してください。
以下に、 /etc/ha.d/authkeysファイルの例を示します。
auth 1 1 md5 key-for-md5-any-text-you-want
キーワードauth の後に入力するインデックスが何であれ、インデックスは、このファイル内のキーの下に入力しなければなりません。「auth 4」を入力した場合は、下のリストに「4 署名タイプ」行を含めなければなりません。
ファイルパーミッションを安全にするため、以下を実行します。
chmod 600 /etc/ha.d/authkeys
#logfacility local7 #logfile /var/log/ha-log #debugfile /var/log/ha-debug use_logd on udpport 694 keepalive 1 # 1 second deadtime 10 initdead 80 bcast eth0 #serial /dev/ttyS0 #if you use serial #baud 19200 #if you use serial node linuxha1 linuxha2 crm yes auto_failback yes
ログとデバッグについて
ログデーモンを使用する場合には、このファイルのlogfile/debugfile/logfacilityは意味をなしません。ログデーモンの構成ファイルをチェックしてください(デフォルトは/etc/logd.cfです)。/usr/share/doc/heartbeat-2/ha_logd.cfでは、例が紹介されています。
use_logd を使用していない場合、全てのログメッセージはログファイルに直接書き込まれます。ログデーモンは、Heartbeatスクリプトで開始または停止されます。
use_logd |
ha-logdを使用します。「yes」に設定することをお勧めします。 |
logfacility |
メッセージのログに使用するsyslogログファシリティを定義します。use_logdが有効な場合は無視されます。 |
logfile |
Heartbeatのデバッグ以外のメッセージは全て、このファイルに出力されます。use_logdが有効な場合は無視されます。 |
debugfile |
Heartbeatがデバッグメッセージを書き込むファイルを指定します。use_logdが有効な場合は無視されます。 |
時間とネットワーク
udpport |
ノード間の通信にHeartbeatが使用するポートを指定します。デフォルトは694です。 |
keepalive |
キープ・アライブ・パケットの間隔を指定します。 |
deadtime |
Heartbeatがクラスタのノードが停止していると判断するまでの時間を指定します。 |
initdead |
起動時間とネットワーク初期化を考慮して、(再起動後などに)全てが最初に起動してから、ノードが停止していると判断するまでの待機時間を指定します。 |
bcast |
キープ・アライブ・パケットを送信するインターフェースを指定します(ブロードキャストを使用する場合)。 |
必要に応じて、bcastの代わりに、 mcastおよび ucastを使用してください。
その他:
node |
どのマシンがクラスタ内にあるかを通知します。 |
crm |
Heartbeatでv2スタイルのクラスタマネージャを実行するかどうかを指定します。ここではonに設定しています。 |
注: Heartbeat 1セットアップを使用する場合は、crmをoffに設定します。
ha.cfファイルの詳細は、 こちらをご覧ください。
/var/lib/heartbeat/crm/cib.xml:基本的には、このファイルで、クラスタのサービスとデフォルトのオーナーを指定します。
以下の場所に、基本的なリソース構成についての簡単な例が紹介されています: ja/v2/Examples/Simple_ja
以下の場所に、高度な構成についての例が紹介されています:ja/v2/Examples/Advanced_ja
より詳細な構成については、ja/ClusterInformationBase/UserGuide_jaに記載されています。
ここでの設定では2つの構成を行う必要があります。これらは、Apacheの構成ファイルで行うことができます。
Debianの場合: /etc/apache2/apache2.conf
ApacheがリスンするIPを定義します。
Listen 10.7.200.30:80
監視を行うには、下記を実行してください。
# Allow server status reports, with the URL of http://servername/server-status # Change the ".your_domain.com" to match your domain to enable. # <Location /server-status> SetHandler server-status Order allow,deny Allow from all </Location>
共有ストレージの代わりにDRBDを使用する場合は、DRBDを構成してください。
作成するリソースエージェントを OCFリソースエージェントにすることをお勧めします。