MC/ServiceGuard

MC/ServiceGuardとは



MC/ServiceGuardは、ヒューレット・パッカード(HP)が提供する、HP-UXおよびLinux環境向けの高可用性クラスタリングソフトウェアです。このソフトウェアは、システムの可用性を向上させるために設計されており、特にエンタープライズレベルのシステムで重要な役割を果たしています。

現在の最新バージョンは11.19(2009年4月リリース)で、HP-UXのバージョンに合わせられています。バージョン11.15以降は、正式名称がServiceguardまたはHP Serviceguardに変更され、旧称はMC/ServiceGuardまたはMulti-Computer/ServiceGuardでした。

商用UNIX系高可用クラスタ構築において、IBM社のHACMPと並ぶ実績を持ち、2009年4月には、HPはServiceGuard for Linux 11.19を最終バージョンとしましたが、2012年にProject Odyssayを発表し、Serviceguard for Linuxの再販を決定しました。

実装・動作仕様



相互監視



クラスターを構成する各ノードの稼働監視にはLANが使用されます。ノード間でハートビートパケットを送り合い、各ノードの健全性を相互に確認します。クラスターに参加するノードのうち、1台がマスターノードとして選出され、クラスター管理デーモンが動作します。このマスターノードの選出は、各ノードからの投票によって決定されます。

2ノードクラスターの場合、スプリットブレインシンドローム(二重故障)を回避するために、共有ディスク上のLVM管理領域をタイブレーカーとして使用し、生存ノードを決定します。

一般的に、ハートビートを送信するためのインターコネクトには、ネットワークアダプタの多重設定が推奨されています。これにより、TCP/IPのソフトウェア的な単一障害点(SPOF)を回避できます。また、インターネットスーパーサーバ(inetd)を介してTCP/IPの自己チェックを行う機能も備えています。

タイブレーク機構



2ノードクラスターでは、どちらかのノードが停止した場合、ノード残存率が50%となり、タイブレーカーが必須です。それ以上の台数でクラスターを構成する場合でも、タイブレーカーの使用が推奨されます。

ServiceGuardでは、以下の2つのタイブレーカーの実装をサポートしています。

1. ロックディスク方式: ディスクへのアクセスを最初に成功させたノードを生存させる方式です。この方式は、SCSIエンクロージャやFC、iSCSIなどのストレージ接続にも対応し、汎用性に優れています。ロックディスクにはLVMで認識される任意のディスクを使用でき、必要なディスク容量も最小限に抑えられます。
2. クォーラムサーバ方式: サバイバルノードの決定をクォーラムサーバに委ねる方式です。ロックディスク方式とは異なり、物理的なディスク書き込みが発生しないため、高速にサバイバルノードを決定できます。これにより、クラスタ再構成時間を短縮し、ダウンタイムを最小限に抑えることが可能です。この方式を利用するためには、『HP Serviceguard Extension for Faster Failover』という拡張モジュールが必要です。

サービスの高可用化



ServiceGuardでは、クラスターで稼働するサービスやアプリケーションを「パッケージ」という単位で管理します。パッケージには、論理IPアドレス(またはリロケータブルIPアドレス)と共有ディスクが割り当てられ、クラスターをLANの外から見たときには、仮想的な1台のコンピューターのように見えます。

1つのパッケージに複数の論理IPアドレスと共有ディスクを含めることが可能ですが、共有ディスクはノード間で排他制御され、パッケージが使用中は他のノードからアクセスできません。

各種パッケージはシェルスクリプトでラップするだけでクラスターに実装できるため、既存システムの高可用化が比較的容易です。この柔軟性から、既存サービスの改修が難しい金融・証券系の基幹システムで高いシェアを誇ります。アプリケーションのロジックとクラスタのロジックを分離できるため、大規模なアプリケーションの高可用化にも適しています。

フェイルオーバ判断



フェイルオーバー条件は、システムの可用性レベルに応じて厳密に規定されます。フェイルオーバーはサービスの一時的な停止を伴うため、その条件は専門家と慎重に検討する必要があります。ServiceGuardは、標準機能に加えて、シェルスクリプトによるカスタマイズにより、柔軟なフェイルオーバー判断が可能です。

サービス停止によるフェイルオーバ



ServiceGuardで起動するサービスを監視するサービスを定義することで、特定のサービスが停止した場合にフェイルオーバーを実行できます。例えば、シェルスクリプトプロセスの存在を確認するコードを記述することで、サービスの監視が可能です。

ネットワーク断絶によるフェイルオーバ



サービス提供に必要なLANを監視し、断絶が発生した場合にフェイルオーバーを実行できます。ServiceGuardの「ローカルスイッチ」機能でLANポートを冗長化している場合は、全ての冗長化ポートが断絶した場合にフェイルオーバーが行われます。

ハートビート断絶によるフェイルオーバ



ハートビートの断絶は、ノードが互いに相手の停止を認識するトリガーになります。各ノードはタイブレーカーへのアクセスを試み、失敗したノードは強制的に再起動され、保持していたリソースを解放します。サービスを実行しているノードがクラスターロックの獲得に失敗した場合、フェイルオーバーが発生し、ノード自体が停止します。

その他のフェイルオーバ



EMS(イベント管理システム)と呼ばれるハードウェア/ソフトウェア資源の健全性や動作状況をチェックするDiag系フレームワークと連携することで、より高度な健全性チェックやフェイルオーバー判断が可能です。

販売状況



証券・金融系での人気により、国内ベンダーによるOEM化が進み、NECや日立製作所において多数のライセンスが販売されています。機能拡張も国内ベンダーとの協力が進み、ホットスタンバイ機能やノード間切り替えの高速化など、主要機能の強化が行われています。

一方で、Linux系の高可用クラスターパッケージとしては、普及が限定的です。国内では、商用UNIXのリセラーであるNECが自社のClusterProを、日立もスチールアイテクノロジーのLifeKeeperやClusterProOEMで扱い、自社製クラスタソフトHAモニタを販売していることが、ServiceGuardの販売低迷の一因と考えられます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。