Serviceguard for Linuxでクラスタ環境の管理
クラスタLVMとパッケージ
SGLXにおける共有ストレージは、全クラスタノードから物理的に接続されている必要がありますが、共有ストレージ内で冗長化されている1つのリ ソースにアクセスできるのは1ノードのみです。複数のクラスタノードが共有ストレージ上で構成されている1つのリソースに同時にアクセスすることはできま せん。
もし複数のクラスタノードが共有ストレージ上の1つのリソースへ同時にアクセスすると、共有ストレージ上のデータは破壊されてしまいます。しかし、複数のクラスタノードから、共有ストレージ上に存在する別々のサービスにアクセスすることは可能です。
この機能を実現するためには共有ストレージ上にLVM領域を作成します。SGLXでは共有ストレージ上に、冗長化したいリソースごとにLVMボ リュームグループを作成します。SGLXで管理されるリソースは、共有ストレージ上に作成したLVMのボリュームグループに一対一で対応します。
例えば、高可用性を持ったApacheサーバとMySQLサーバを1つのクラスタシステムで実現するためには、Apache用のLVMボリュームグ ループとMySQL用のLVMボリュームグループを作成します。これにより、ApacheとMySQLのデータを単一の物理ストレージ上に持ち、別々のク ラスタノードから同時に各アプリケーションを利用することが可能となります。
ノードに障害が発生した場合、そのノード上で実行されていたアプリケーションやデータが保存されているボリュームグループは、障害ノードで非アクティブ化され、待機している正常なクラスタノードでアクティブになります。
可用性をもったアプリケーション、リソース(仮想IPアドレス、ディスク領域、ファイルシステム、プロセスなど)、フェイルオーバー先のノード名な どをひとまとめにしたものをSGLXではパッケージと呼びます。SGLXで冗長化されるアプリケーションは、パッケージとして取り扱います。パッケージの 実行に必要なものとして、以下の2種類のファイルがあります。
- パッケージ構成ファイル
- パッケージ制御スクリプト
パッケージ構成ファイルには、パッケージ名、サービス名、フェイルオーバーポリシー、所属するLANのサブネットなどを記述します。一方パッケージ 制御スクリプトには、そのアプリケーションが利用するLVMボリュームグループ、ファイルシステムの種類、マウントポイント、仮想IPアドレス、カスタム スクリプトなどを記述します。
パッケージ制御スクリプトの作成方法
SGLXはアプリケーションをクラスタノードで起動、停止する際に、パッケージ制御スクリプトを実行します。パッケージ構成ファイル、パッケージ制御ファイルは、管理者がスクラッチから作成する必要はなく、以下のコマンドで簡単に雛形を生成できます。
パッケージ構成ファイルの雛形pkg.confを生成する方法
# cmmakepkg -p /usr/local/cmcluster/conf/pkg01/pkg.conf
パッケージ制御スクリプトの雛形pkg.cntlを生成する方法
# cmmakepkg -s /usr/local/cmcluster/conf/pkg01/pkg.cntl
SGLXではパッケージ構成ファイル、パッケージ制御スクリプトを冗長化したいアプリケーションごとに用意します。また各アプリケーションは、異な るLVMボリュームグループを利用しますので、例えばApache用とMySQL用にそれぞれパッケージ構成ファイルとパッケージ制御スクリプトを生成 し、それぞれの制御スクリプトには異なるLVMボリュームグループを記述します。
これらパッケージ構成ファイル、パッケージ制御スクリプトの雛形からシステム要件にあった設定に変更した後、全クラスタノードにファイルをコピーし、パッケージ構成ファイルのチェックとコンパイルを行います。
パッケージ構成ファイルの内容をチェックするためのコマンドとしてcmcheckconfコマンドが用意されていますので、必ずチェックを行います。
パッケージ構成ファイルのチェック
# cmcheckconf -P /usr/local/cmcluster/conf/pkg01/pkg.conf
チェックしてエラーがない場合は、cmapplyconfコマンドにより、パッケージ情報をコンパイルします。コンパイルすると、クラスタバイナリファイルとしてSGLXに組み込まれます。
パッケージ構成ファイルのコンパイル
# cmapplyconf -P /usr/local/cmcluster/conf/pkg01/pkg.conf
以上のようにSGLXは、クラスタ構成ファイル、クラスタ制御スクリプト、Serviceguard for Linux Toolkitのモニタリングスクリプトなどにより、カスタマイズ性が非常に高く、様々なベンダーのオリジナルアプリケーションに対してクラスタ化が可能 となっている点が特徴です。