2015年10月14日水曜日

CentOS で Consul 入門

概要

CentOS 上で Consul を触ってみたのでメモ

Consul はいわゆる、サービスディスカバリのためのツールです
あるクラスタにサーバが1台追加されたら、それを検知して何かアクションを実行したりすることができます
今回は2台のサーバを用意して試してみました

環境

  • CentOS 6.6 64bit
  • Consul 0.5.2

インストール

バイナリを1つ配置して終了です

サーバモードで起動

1台はサーバモードで起動します
サーバ側の IP は 192.168.0.10 (server001) とします

  • consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul &

クライアントモードで起動

クライアント側はサーバモードで起動したノードに対して join します
クライアント側の IP は 192.168.0.11 (client001) とします

  • consul agent -data-dir=/tmp/consul -server -join 192.168.0.10 &

クラスタ内のメンバーを確認する

  • consul members
Node           Address            Status  Type    Build  Protocol  DC
server001      192.168.0.10:8301  alive   server  0.5.2  2         dc1
client002      192.168.0.11:8301  alive   client  0.5.2  2         dc1

サーバ、クライアントどちらで実行しても OK です
こんな感じで表示されるはずです
どちらのノードも alive になっていることがわかると思います

終了する(リーブする)

特定のクライアントを終了したい(クラスタから離脱させたい)場合は kill をするのではなく leave コマンドを使います

  • consul leave

これでプロセス自体もいなくなります
consul members で見てみると alive だったのが left になっているのが確認できると思います

consul watch で特定のコマンドを実行してみる

例えば server001 で以下を実行してみましょう

  • consul watch -type=service -service=consul “echo change services >> /var/tmp/consul.log”

クラスタ内に属するどれかのサーバで consul プロセスに何か変化があった場合に最後に指定したコマンドが実行されます
この状態で client001 で consul leave を実行するとコマンドが実行されファイルに文字列が出力されると思います

type はいろいろと指定できます
今回指定した service はサービスプロセスの変化を watch するタイプです
他にも key (key - value ストアの変化を watch する) , event (任意のイベントの発行を watch する) などがあります
詳細はここの Watch Types という項目に記載されています

最後に

簡単ですが、インストールから起動、consul watch までを試してみました
印象は非常にシンプルで便利なツールだと思いました
シンプルが故に応用もかなり効くと思います
今回は紹介しませんでしたが、クラスタ内で KVS を共有できたり、クラスタ内で DNS を立てたりすることもできるようです

たぶん機能の肝になるのは consul watch かなと思います

参考サイト

0 件のコメント:

コメントを投稿