MC/ServiceGuard

MC/ServiceGuardとは、ヒューレットパッカード (HP) のHP-UXかLinuxで高可用性を実現するクラスターパッケージのこと。
現在の最新バージョンは11.19（2009年4月リリース）。先頭の11と言う数字は、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台をマスターノードとして、クラスター管理デーモンが動作する。このマスターノードの決定は、各ノードからのVote（投票）によって決定される。2ノードクラスターを構成する場合、スプリットブレインシンドロームを回避するため、共有ディスク上のLVM管理領域をタイブレーカに使用し、サバイバルノードを決定する。
一般にハートビートを通すインターコネクトはネットワークアダプタによる多重設定を推奨しており、TCP/IPにおけるソフトウェア的な単一障害点 (SPOF) を回避するため、インターネットスーパーサーバ (inetd) を介してTCP/IPの自己チェックを行う機能を有する。
タイブレーク機構.
2ノードクラスタの場合はどちらかのノードが停止した場合、ノード残存率が50%となるため必ずタイブレーカが必要である。それ以上の台数でクラスタを構成する場合でもタイブレーカの使用が推奨されている。
ServiceGuardではタイブレーカの実装として以下の2つをサポートしている。
サービスの高可用化.
ServiceGuardではクラスターで稼動するサービスやアプリケーションを「パッケージ」と呼ばれる機能単位で管理する。パッケージには論理IPアドレス（またはリロケータブルIPアドレス）、共有ディスクが割り当てられるため、クラスタを構成するのLANの外側から見たときに、仮想的な1台のコンピュータに見える。1つのパッケージに複数の論理IPアドレス、共有ディスクを含めることが可能である。ただし、共有ディスクについてはノード間で排他制御がかかり、パッケージで使用している間はそれ以外のノードからアクセスすることはできない。
各種パッケージをシェルスクリプトにてラッピングするだけでクラスターに実装する事が可能なため、既存システムの高可用クラスター化において、比較的容易に対応できる。このため、既存サービスの改修が難しい金融/証券系の基幹システムにおいて圧倒的なシェアを持つ。Unix系のクラスターと言えば、一時期はMC/ServiceGuardで構成するものと語られた時期があった程。アプリケーションのロジックとクラスタのロジックを分離して実装できるため、大規模なアプリケーションの高可用化に適している。
フェイルオーバ判断.
フェイルオーバ条件はシステムの保障すべき可用性レベルに応じて厳密に規定される。フェイルオーバは短時間ではあるがサービスの供給が停止するため、その条件は専門のエンジニア・コンサルタントと共に慎重に検討する必要がある。ServiceGuardは様々な標準機能に加え、簡単なシェルスクリプトを記述することによって、きめ細やかなによるフェイルオーバ判断が可能である。
販売状況.
証券及び金融系での人気により、国産ベンダのOEM化が進み、NEC/日立製作所において相当数のライセンスが販売されている。
また、機能拡張の主軸も国産ベンダによる協力強化が進んでおり、ホットスタンバイ機能やノード間切り替えの高速化などのメイン機能に日立やNECのエンジニアによる強化も行われている。
一方、Linux系の高可用クラスターパッケージとしては、低調である。
日本国内で見ると、商用UNIXでのリセラーであるNECが自社のClusterProを担いでいる事や日立もスチールアイテクノロジーのLifeKeeperやClusterProをOEMにて扱い、かつ日立も自社のクラスタソフトであるHAモニタを販売しているため、リセラーによる販売が低い事も一因と思われる。