概要
CentOS 上で Consul を触ってみたのでメモ
Consul はいわゆる、サービスディスカバリのためのツールです
あるクラスタにサーバが1台追加されたら、それを検知して何かアクションを実行したりすることができます
今回は2台のサーバを用意して試してみました
環境
- CentOS 6.6 64bit
- Consul 0.5.2
インストール
バイナリを1つ配置して終了です
- cd /usr/bin
- wget https://dl.bintray.com/mitchellh/consul/0.5.2_linux_amd64.zip
- unzip 0.5.2_linux_amd64.zip
サーバモードで起動
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 件のコメント:
コメントを投稿