PowerHA

**PowerHA**（パワーエッチエー）は、IBMのPOWERシステムベースのAIXおよびLinuxプラットフォーム用の、高可用性のためのクラスターパッケージである。当初の名称は**High Availability Cluster Multiprocessing**（**HACMP**、エッチエーシーエムピー）だったが、2008年に**PowerHA**と改名された。

## 概要
HACMPはRS/6000の初期から提供が始まったが、当初はAIX用のみであり、ES機能は別ライセンスであった。

HACMPは、2台から32台のサーバをクラスターに結合し、サービスノードの障害発生時には、スタンバイノードへのリソースの引継ぎを自動で行う。引継ぎできるリソースには以下がある。
*ディスク（外部ディスク装置上のボリュームグループ、論理ボリューム、ファイルシステム）
*ネットワーク（IPアドレス。構成によってはMACアドレスも可能。ノード内の複数NIC間でも引継ぎ可能）
*アプリケーション（DB2、OracleなどのDBMS、MQ、Tivoliなどの他、ユーザーアプリケーションも可能）

HACMPは、日立からもEP8000のAIX用（IBMからのOEM）として販売されている。

2008年4月のPower Systems発表の際に、HACMPは**PowerHA for AIX and Linux**と改名され、プラットフォームにLinuxが追加された。ただしLinux版は、x86版のLinux用ではなくPOWER版のLinux用であり、また共有ディスクの引継ぎをPowerHAとしてはサポートしていないなど、AIX版とは相違がある。

2009年10月には「PowerHA SystemMirror for AIX V6.1」が発表された。これはPowerHA for AIX 5.5の後継であり、従来のSmart Assistの機能が追加された。また2つのエディション (Standard Edition, Enterprise Edition)、3段階の料金体系 (small, medium, large) となった。

2010年8月には「PowerHA SystemMirror for AIX V7.1」（Standard Editionのみ）が発表された。AIX 7.1のCluster Aware 機能との連係、IBM Systems Directorベースの管理インターフェースなどが追加された。

## 構成
HACMP（PowerHA、以下同様）はクラスターとして、複数のノード（サーバ、OS）に導入・構成され、ノードの稼動状況を相互監視する。サービス側のノードが障害と判断した場合には、事前登録したリソース（IPアドレス、外部ディスク上のファイルシステム、起動プロセス等）を、スタンバイ側の別のノードへ自動引継ぎ（フェイルオーバー、テイクオーバー）する。

引継ぎパターンは、正副構成（サービス機とスタンバイ機）、相互バックアップ（サービス機同士で障害時は片寄せし、縮退運用）、カスケーティング（クラスタ内の適当なスタンバイノードへ引継ぎ）などが可能である。

HACMPは一部のプロセスと多数のシェルスクリプトより構成されており、シェルスクリプトはユーザーによるカスタマイズが可能である（このため、カスタマイズには一定のスキルが必要な反面、きめ細かい構成・運用が可能となる）。

HACMPは、監視・判断・引継ぎ操作などのオペレーションを自動化して、サービス停止時間を最小にするソリューションであり、無停止ソリューションではない（障害発生から引継ぎ完了までの間、および戻しの間はサービス停止となる）。

また、各ノードのハードウェア障害やOS障害などには対応できるが、引継ぎ対象リソース（外部ディスク装置、アプリケーション）自体の障害には対応できないので、単一障害点（SPOF）の除去の観点からは、別の冗長化（外部ディスク装置側の冗長化など）を組み合わせる事が望ましい。更に、LPAR（論理区画）などを使用している場合は、サービスノードとスタンバイノードは、サーバ筐体は当然ながら分ける事が望ましい。

ただしオプションの HACMP Extended Distance (HACMP/XD) は、距離が無制限のデータ・ミラーリングとリカバリーを提供する、災害復旧（ディザスター・リカバリー）ソリューションであり、単一障害点の視点は上述とは異なる。

なお、WebSphere Application ServerやDominoなどの高可用性には、HACMPではなく、それぞれのミドルウェアのクラスタ機能を使う場合が一般的である。

## 動作仕様
高可用クラスターとして、各ノードの生存をハートビート機能により相互に確認し合う。具体的にはKeepAlive(KA)パケットを相互に送信するが、その経路はネットワークアダプタ経由のTCP/IPによるものに加え、非IP経路として共有ディスクまたは非同期通信（シリアル、いわゆるRS-232C、EIA-232-D）のいずれかを組み合わせる事が推奨されている。

非IP経路との組み合わせを推奨する理由は、TCP/IP経由のみではネットワーク障害（NIC障害、LANケーブル障害、Ethernetスイッチ障害など）の場合に相手ノードの生死が正確に判定できないため、誤った引継ぎが発生して共有ディスク上のデータの不整合や破損が発生する事を、最少化するためである。なお、RS-232Cはノイズが乗り易く排他制御が利かないなど信頼性が低いため、HACMPではサポートするシリアルアダプターを明示している（標準搭載のRS-232Cポートは通常サポートされていない）。また2009年現在では、RS-232C経由よりも共有ディスク経由の使用が一般化している。

スプリットブレインシンドローム対策として、KA信号（経路）の多重化及び、特定のデバイスに特化しない事を前提とし、更にサービスノードより強制終了させる、孤立してしまった旧サービスノードはDeadman Switchにより「自爆」する、などが実装されている。

基本機能であるプロセスの起動時名称による監視はpsコマンドによるものだが、拡張機能としてHACMP5.1以降に追加されたユーザー作成によるシェルスクリプトを使用した拡張監視機能を使用すれば、多くのソフトウェアパッケージの細かい動作を監視する事が可能となった。

## 比較
他社の一般的なクラスター製品と比較し、以下の指摘がある。
* アプリケーションを登録する際の考慮点やカスタマイズすべきシェルスクリプトの数が多く、スキルが必要
* サービス監視やサービスの依存リソースの監視などの機能が少なく、カスタマイズにはスキルが必要
* 設定がCUI画面（AIXではsmit）が基本であり、操作性が良くない
* 実績にはIBM製品（System p、DB2、MQなど）との組み合わせが多く、Oracle Databaseなどの実績は（存在するが）比率は多くない

なお、AIX 6 の標準機能であるライブ・アプリケーション・モビリティーや、x86サーバで一般的なVMware ESX の VMotionなどと比較すると、HACMPは障害検知と引継ぎ開始が自動で行える反面、引継ぎ（および戻し）の最中にはサービス停止を伴う。

また、x86サーバでのVMware ESXのVMwareHAと比較すると、VMwareHAはハードウェア全体やESX自体の障害しか検知できないが、HACMPは対象ノード（OS）のハングやNIC障害も検知し引継ぎ可能であるが、2021年時点のvSphereHAではゲストOSのハングアップなど検知が可能になっておりVMwareHAに比べて機能差は縮小している。

## 参照
*PowerHA SystemMirror for AIX Standard / Enterprise Edition V6.1の発表 - IBM
*IBM PowerHA SystemMirror Standard Edition V7およびPowerHA SystemMirror Enterprise Edition V6機能拡張の発表

## 関連項目
* コンピュータ・クラスター
* クラスタリング

## 外部リンク
* PowerHA SystemMirror for AIX - 日本IBM
* PowerHA SystemMirror / PowerHA for AIX / HACMP - 日立製作所(EP8000、AIX用）
* PowerHA SystemMirror マニュアル - IBM