目次
![]() | 重要項目 |
|---|---|
この章では、旧式のLinux-HAクラスタ管理システム(Heartbeat 2.0と2.1)とDRBDを組み合わせる方法を説明します。現在は代わりにPacemakerが使用されます。可能であれば、Pacemakerを使用することをお勧めします。詳細は、8章DRBDとPacemakerクラスタを参照してください。この章ではポリシー上の理由から、従来のheartbeatシステムを使用する必要があるユーザを対象に、 heartbeat構成の概要を説明します。 Heartbeatのクラスタメッセージ層は、Linux-HAプロジェトが別個で、Heartbeatバージョン3としてサポートし続けています。Pacemakerクラスタ管理システムと組み合わせて使っても構いません。Heartbeatの設定に関する詳しい情報は、http://www.linux-ha.org/doc/のLinux-HA User's Guideでご覧いただけます。 |
heartbeatのクラスタ管理システムとしての役割は、クラスタの1つのマシンに障害が発生しても、クラスタがクライアントへのサービスを継続できるようにすることです。 heartbeatがクラスタサービスとして管理するアプリケーションには、次のようなものがあります。
ApacheなどのWeb サーバ
MySQL、Oracle、PostgreSQLなどのデータベースサーバ
NFS、Samba、その他多数のファイルサーバ
基本的には、どのようなサーバアプリケーションでも heartbeatによりクラスタサービスとして管理できます。
heartbeatによって管理されるサービスは、システム起動時の起動スクリプトを無効にし、起動時に開始しないようにします。これらのサービスは、クラスタ構成と状態により必要に応じてクラスタ管理システムが開始および停止します。特定のサービスの実行中にマシン(物理クラスタノード)に障害が発生すると、 heartbeatがクラスタの別のマシンで障害が発生したサービスを開始します。 heartbeatが実行するこの操作は、一般に(自動) フェイルオーバと呼ばれます。
1つのクラスタノードからもう一方へクラスタサービスを手動で移行することを、手動フェイルオーバと呼びます。これはいくらか矛盾した呼び方であるため、本ガイドでは スイッチオーバという用語を使用します。
障害が発生したノードが回復したら、ただちにリソースをこのノードに自動的に再移行することもできます。この処理は フェイルバックと呼ばれます。
一般に、heartbeatが管理するクラスタサービスをノードで開始するには、特定の要件を満たす必要があります。一般的なデータベース駆動型Webアプリケーションの例を考えてみましょう。
Webサーバとデータベースサーバの両方が、ある特定のIP アドレスで正常に動作するよう設定されていると仮定します。
データベースには、データファイルを取得するファイルシステムが必要です。
このファイルシステムには、読み取りと書き込みのために配下にブロックデバイスが必要です。後述のように、ここでDRBDが必要になります。
Webサーバも起動されたデータベースに依存します。データベースが起動していなければ、動的コンテンツを提供できません。
heartbeatが制御するサービスおよびサービスが依存する追加要件を、 heartbeatの用語ではリソースと呼びます。このリソースが相互に依存する集合を形成します。この集合をリソースグループと呼びます。
heartbeatは、RA (リソースエージェント)と呼ばれる標準化されたシェルスクリプトを呼び出してリソースを管理します。 heartbeatクラスタでは、次のようなタイプのリソースエージェントを使用できます。
heartbeatリソースエージェント. これらのエージェントは/etc/ha.d/resource.dディレクトリに置かれています。これらはゼロ以上の命名されていない定位置パラメータと 1つのオペレーション引数 (start、stop またはstatus)を取ることができます。 heartbeatは、/etc/ha.d/haresourcesの一致するリソースに対して見つかったパラメータを、 RAの定位置パラメータに変換し、RAがこれらを使用してリソースを設定します。
LSB リソースエージェント. これは、従来のLinux Standard Base対応の起動スクリプトで、 /etc/init.d に置かれています。 start、stopまたはstatus引数を指定して heartbeatが簡単に呼び出すことができます。定位置パラメータは取りません。したがって、リソースの設定パラメータを管理することはできません。これらのサービスは従来の設定ファイルで構成する必要があります。
OCFリソースエージェント. これはOpen Cluster Frameworkのガイドラインに準拠したリソースエージェントで、 CRMモードのクラスタ以外では使用できません。これは通常、システムアーキテクチャとディストリビューションに応じて、 /usr/lib/ocf/resource.d/heartbeatまたは /usr/lib64/ocf/resource.d/heartbeat に置かれています。定位置パラメータは取りませんが、環境変数を使用して設定パラメータを詳細に指定できます。この環境変数は、クラスタ管理プロセスがクラスタ構成から取得し、呼び出し時にリソースエージェントに渡します。
heartbeatはUDPベースの通信プロトコルを使用し、ノードの可用性を定期的にチェックします。これをハートビートと呼び、"heartbeat" という名前の由来になっています。このために、heartbeatでは次のような通信方法が使えます。
IPマルチキャスト
IPブロードキャスト
IPユニキャスト
シリアル回線
中でも、IPマルチキャストとIPブロードキャストが広く使用されています。クラスタが安定して動作するための最低要件として2つの独立した通信チャネルが必要です。