serf-hosts をシェルスクリプトで書き直した
Posted on
- #serf
タイトルのまんまですが、最近 Serf を触っています。 Serf がわからない人は @sonots さんの記事がおすすめです。
serf-hosts とは
@kentaro さんが作った serf-hosts は Serf のイベント (join, leave, failed) をトリガーに、各サーバの /etc/hosts を更新する Perl スクリプトです。クラスタにサーバが追加されたら、そのホスト名をクラスタ全体に反映してくれます。サーバがダウンしたり、クラスタから抜けたときも同様です。
/etc/hosts に書いてあると、内部 DNS サーバを立てる必要がありません。名前解決のコストもほぼゼロにできます。
機能的には満足なんですが、個人的に Perl が苦手なのでシェルスクリプトで書き直してみました。
Amazon Linux で動作確認を行っています(GNU sed にしかないオプションを使っているので Mac だと 21 行目でコケます)。
まとめ
イベントハンドラに渡すスクリプトは言語を問わないので、自分の好きな言語で書けます。アイデアがある人はぜひ。
中央集権なサーバを持たずゴシッププロトコルでクラスタを構成する Serf には、これまでのツールにはない可能性を感じます。これからもっと成長するんじゃないでしょうか。