SerfはHashiCorp社が開発した独創的なサーバー監視ソフトウェアだ。集中管理サーバーは持たず、サーバー間で独自にノードを構成し、メッセージ交換を行うことでサーバーの監視や管理を実現する。
ライセンスはMPLで全機能を無償で利用することが可能。2013年8月23日にver 0.1.0が公開され、現在の最新バージョンは2014年7月10日にリリースされたver 0.6.3と、短期間に活発な更新が行われている。
ロゴにもそのイメージが表現されているように、同じクラスター内でSerfが動作しているサーバー間でノード連携を行っている。このため集中管理サーバーが存在せず、各サーバー間で連携を行うことで動作する。主な機能は以下の5つ。
イベントは、メンバーの管理に関する「join」(serf agent接続)、「leave」(serf agent切り離し)、「failed」(serf agent監視不可)が標準で定義されており、カスタムイベントの登録も可能だ。また、イベント発生に対応したイベントハンドラーのスクリプトも定義できる。
イベントハンドラーは、主にクラスターメンバーの管理 (membership) 、障害検知および復旧 (failure detection and recovery) 、カスタムイベントの伝搬 (custom event propagation)を行う。chefのCookbookからSerfインストール用のchefレシピなどの呼び出しも可能だ。
メッセージの伝搬自体はGossipプロトコルが利用されており、非常に高速に行われる。従来の集中管理型のシステム監視ソフトウェアに比べても障害の検知などの速度は速い。ただし、システム間の整合性を確保するため、ノード間サーバーはNTPなどで時刻を合わせておく必要がある。
公式サイトから、Serfのインストーラーがダウンロード可能。実行するのに必要なものは「Serf」というバイナリファイル一つのみで、ノードの設定など、エージェント間連携を行うために必要な情報は実行時のコマンド引数として定義する。サービスとして自動起動する場合は、スクリプトなどで起動処理を作成する必要がある。
対象はLinux OSのみ。Chefを利用し、CookbookからSerfインストール用のChefレシピを利用してインストールを行うと、自動起動のスクリプトが同時に生成される。
メッセージ送信によるノード間連携で自動的に処理が実行されるため、インフラ構築自動化に活用が可能と考えられる。システム監視用の集中管理サーバーが不要なため、オートスケールなどでサーバーの増減が発生したり、Immutable Infrastructure(Disposable Infrastructure)のコンセプトで設計されたシステムの監視基盤として活用が考えられる。新しいコンセプトの製品であり、これからさらに製品の進化や用法の研究が進むことで、より利便性が向上することが期待されている。
Copyright © ITmedia, Inc. All Rights Reserved.