目次
DRBDは、Linux-HAクラスタマネージャ(heartbeat)を使用するシステム構成でよく 利用されます。 現在はheartbeatに代わりPacemakerクラスタマネージャが使用されています。 ただし、この章ではポリシー上の理由から、 従来のheartbeatシステムを使用する必要があるユーザを対象に、 heartbeat構成の概要を説明します。
ここでは、DRBDをLinux-HA高可用性クラスタの レプリケートされたストレージとして使用する場合について取り上げます。 従来のheartbeatリリース1対応クラスタと、 より新しいCRM (Cluster Resource Manager: クラスタリソースマネージャ)対応 heartbeat 2クラスタの両方について説明します。
heartbeatのクラスタマネージャとしての役割は、 クラスタの1つのマシンに障害が発生しても、 クラスタがクライアントへのサービスを継続できるようにすることです。 heartbeatがクラスタサービスとして管理するアプリケーションには、 次のようなものがあります。
ApacheなどのWebサーバ
MySQL、Oracle、PostgreSQLなどのデータベースサーバ
NFS、Samba、その他多数のファイルサーバ
基本的には、どのようなサーバアプリケーションでも heartbeatによりクラスタサービスとして管理できます。
heartbeatにより管理されるサービスは、 通常は起動時に開始されずに、システム起動構成から削除されます。 これらのサービスは、クラスタ構成と状態により必要に応じてクラスタマネージャが開始および停止します。 特定のサービスの実行中に、マシン(物理クラスタノード)に障害が発生すると、 heartbeatがクラスタの別のマシンで障害が発生したサービスを開始します。 heartbeatが実行するこの操作は、一般に(自動) フェイルオーバと呼ばれます。
1つのクラスタノードからもう一方へ手動で介入してクラスタサービスを移行することを、 手動フェイルオーバと呼びます。 これはいくらか矛盾した呼び方であるため、 本ガイドでは スイッチオーバという用語を使用します。
heartbeatを使用して、 障害が発生したノードが回復したらすぐに、リソースをこのノードに自動的に再移行することもできます。 この処理は フェイルバックと呼ばれます。
一般に、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対応のinitスクリプトで、
/etc/init.d に置かれています。
start、stopまたはstatus引数を指定して
heartbeatが簡単に呼び出すことができます。
定位置パラメータは取りません。
したがって、heartbeatで対応するリソースの構成を管理することはできません。
これらのサービスは従来の設定ファイルで構成する必要があります。
OCFリソースエージェント. これはOpen Cluster Frameworkのガイドラインに準拠したリソースエージェントで、
CRMモードのクラスタ以外では使用できません。
これは通常、システムアーキテクチャとディストリビューションに応じて、
/usr/lib/ocf/resource.d/heartbeatまたは
/usr/lib64/ocf/resource.d/heartbeat に置かれています。
定位置パラメータは取りませんが、環境変数を使用して構成を拡張できます。
この環境変数は、クラスタ管理プロセスがクラスタ構成から取得し、
呼び出し時にリソースエージェントに渡します。
heartbeatはUDPベースの通信プロトコルを使用し、 ノードの可用性を定期的にチェックします("heartbeat" proper)。 このために、heartbeatでは次のような通信方法を使用することができます。
IPマルチキャスト
IPブロードキャスト
IPユニキャスト
シリアル回線
中でも、IPマルチキャストとIPブロードキャストが広く使用されています。 クラスタが安定して動作するための最低要件として2つの独立した通信チャネルが必要です。