OSSのクラスタ管理ソフト「Heartbeat」
OSSの基盤クラスタソフトとして、もっとも代表的なソフトウェアがHeartbeatです。Heartbeatは、Linux-HAプロジェクトが開発、管理を行っているソフトウェアで、Pacemakerなどのクラスタリソースマネージャと組み合わせて利用します。Heartbeatは、クラスタノード間でのメッセージの交換、ハードウェアの制御などの機能を提供します。
リソースエージェント
リソースエージェントは、Pacemakerがリソースを起動、停止する時に使うプログラムです。Heartbeatでは、次のようなOCFリソースエージェントも提供しています。
- IPaddr
- LVM
- LinuxSCSI
- MailTo
- Squid
- Xen
- Xinetd
- Apache
- asterisk
- dhcpd
- iSCSITarget
- iscsi
- jboss
- MySQL
- named
- nfsserver
- oracle
- pgsql
- Postfix
- proftpd
- rsyncd
- rsyslog
- slapd
- tomcat
- vmware
- zabbixserver
多くのアプリケーションに対応したエージェントが公開されています。
自ノードの監視
Heartbeatは、モニタデバイスを使って、自ノードが適切に動作しているかを確認します。モニタデバイス(/dev/monitor)は、Linuxに備わっているプロセスモニタ機能の一つです。この機能が有効になっている間は、一定時間毎にプロセスからモニタデバイスにデータを書き込む必要があります。書き込みがないと自ノードが正常に動作していないと判断し、自動的にリブートが行われます。
このモニタ機能を使うと、サーバが過負荷、メモリ不足などで適切に動作しなくなった時でも、Linuxカーネルだけが動作していれば、システムを強制再起動することで早期復旧をすることができます。
また、仮想サーバ上でシステムを動作させている時には、仮想サーバから割り当てられるCPU実行時間が足りなくなったことも検知することができます。
ノード間の監視と制御
Heartbeatは、ノード間で定期的にデータを交換する機能を持っています。決められた時間内にデータが送られてこない場合には、相手ノードが異常であると判断して、システムを切り替えることができます。ノード間で定期的に行われる通信をハートビートと呼びますが、これはHeartbeatというソフトウェアの名称の由来にもなっています。
また、監視だけではなく、相手のノードをシステムから切り離すなどの制御も行うことができます。
STONITH
STONITHは、相手ノードが異常状態に陥った時に、強制的に切り離す機能です。一般的には、相手ノードの電源を切断します。何らかの異常に陥った時には、どんな副作用があるかわからないため、こうした強制機能が用意されているのです。
STONITHを使う場合には、一般的には何らかのハードウェアサポートが必要になります。よく使われる装置としては、サーバハードウェアに付属しているマネージメントボードや電源管理装置などがあります。
ハードウェアのサポートが必要ですので、STONITHの利用は必須ではありません。ただし、STONITHを使わないと、システムが中途半端な異常状態になった時には適切に切り替わらない可能性があります。そのため、システムに求めるリスクに応じて、STONITHを利用するかを選択します。
このように、どこまでの機能を利用するかを選択することができるのも、オープンソースソフトウェアのクラスタソフトならではのメリットと言えるでしょう。