Serviceguard for Linuxでクラスタ環境の管理
Serviceguard for Linuxにおける仮想IPアドレス
前回はRed Hat Eterprise Linux 4におけるクラスタリングについて説明するとともに、HAクラスタリングを実現するServiceguard for Linux(以下、SGLX)の解説をしました。続く今回は、SGLXを使ったクラスタがどのようになっているかを説明していきます。
SGLXで構成されたHAクラスタシステムは、複数のクラスタノードから構成されているため、ノードごとにそれぞれが固有のIPアドレスを持っています。これをステーショナリIPアドレスと呼びます。
なお、クラスタサービスが起動しているいないにかかわらず、メンテナンスなどの理由により、クラスタノードに直接ログインしなければならない場合は、ステーショナリIPアドレスを使ってアクセスします。
SGLXには仮想IPアドレスと呼ばれる機能があります。仮想IPアドレスにより、クライアント側からクラスタシステムをみると、あたかも単一サーバからサービスが提供されているかのように見えます。
仮想IPアドレスは、ホストに対して割り当てられるのではなく、SGLXが提供するサービスに対して割り当てられます。SGLXでは複数の異なる サービスを同時にクライアントに提供することができますので、仮想IPアドレスもそのサービスの数だけ複数持つことができます。サービスを提供していたク ラスタノードに障害が発生しても、他のノードがそのサービスに関連づけられた仮想IPアドレスを引き継ぎ、クライアントは障害前と同じIPアドレスでサー ビスを受けることが可能となります。
この仮想IPアドレスの機能によって、クライアントがクラスタのどのノードでサービスが稼動しているかを意識することなくサービスが稼動しているクラスタノードへアクセスすることができます。
SGLXにおいて仮想IPを実現するには、パッケージ制御スクリプトと呼ばれるファイルに仮想IPアドレスを記述します。仮想IPアドレスはステーショナリIPアドレスと同様に/etc/hostsファイルやDNSサーバに登録することができます。
もしクラスタのネットワークに障害が発生し、クラスタノード同士が通信できなくなると、SGLXは正常な通信ができるクラスタノード同士(サブクラスタ)で、クラスタの再編成を試みます。
SGLXでは、これから再編成されようとしているクラスタノード数が、障害前に構成していた正常なクラスタノード数の過半数以上を超えた場合、その 過半数を超えたノードでクラスタが再編成されます。過半数を満たさないサブクラスタのノードは停止します。しかし2ノードクラスタの場合は、過半数をみた すノードがないので、どちらのクラスタノードをクラスタシステムとして残すかを決める仕組みが必要になります。
クラスタロックの方式
クラスタノードをクラスタシステムとして残す方法として、SGLXにおいては「クラスタロック」という概念があります。
2ノードクラスタのように、同じサイズのサブクラスタ(この場合のサイズは1台)のどちらが残るかを決めるにはクラスタロックが必要となります。SGLXにおけるクラスタロックの方式としては以下の2種類を選択できます。
- ロックLUN方式
- クォーラムサーバ方式
この2つの方式について、もう少し詳しく解説します。
ロックLUN方式
ロックLUN方式は、クラスタの状態を保存しておくクラスタロックLUN領域を共有ストレージの一部に持ちます。クラスタノードはクラスタの状態をロックLUN領域に定期的にアクセスすることで確認します。
クラスタに障害が発生した場合、クラスタノードはロックLUN領域にマーキングを行います。マーキングが成功したノードはクラスタの再編成を行い、マーキングができなかったノードはクラスタとして構成されず停止します。
ロックLUN方式では共有ストレージにロックLUN専用の領域としてフォーマットします。ロックLUN領域はfdiskコマンドでパーティションを 作成し、Linux領域(idは83)として確保します。SGLXはロックLUN領域の状態を定期的にチェックしており、ロックLUN領域に障害が発生し た場合はクラスタノードの/var/log/messagesファイルにメッセージが記録されるようになっています。
クォーラムサーバ方式
一方のクォーラムサーバ方式は、クラスタノード以外に別途クォーラムサーバと呼ばれるクラスタの調停役のサーバを1台配置します。障害発生時に、ク ラスタノードはクォーラムサーバにアクセスし、クォーラムサーバのメモリにマーキングを行います。クォーラムサーバのマーキングに成功したノードはクラス タの再編成を行います。
クォーラムサーバはServiceguard Quorum Serverとして無償で提供されています。Serviceguard Quorum ServerはRPMパッケージで提供されており、rpmコマンドで容易にインストールできます。クォーラムサーバ方式のSGLXのシステム構成を以下に 示します。