Consul
- consulはサービス監視が可能なオーケストレーションツール
- 呼び方はカンサル(コンサルとも呼ばれる)
- serfでもクラスタリングできるが、serfはserfエージェントの活性のみ監視する。consulはサービス検出機能を持ち、それらが正常か異常かを確認できる為、任意のサービスを監視し、トリガー発動でコマンド実行するといったことができる。
- 1つのバイナリファイルで実行し、起動時にサーバかクライアントかを選択する、LinuxH/Aと比べて構成部品が少なく、構築コストが低い。
- サーバは主にクライアントの情報を蓄積し、要求があった場合に回答する。
設定
- パッケージで配布されていない為、バイナリファイルをダウンロード
$ wget -O consul_0.6.4_linux_amd64.zip https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
$ unzip consul_0.6.4_linux_amd64.zip
$ sudo cp consul /bin
$ sudo consul version
Consul v0.6.4
Consul Protocol: 3 (Understands back to: 1)
$ sudo rm consul_0.6.4_linux_amd64.zip
- Web-UIファイルも別途ダウンロード
$ sudo mkdir -p /var/www/consul-web-ui
$ cd /var/www/consul-web-ui
$ sudo wget -O consul_0.6.4_web_ui.zip https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip
$ sudo unzip consul_0.6.4_web_ui.zip
$ sudo rm consul_0.6.4_web_ui.zip
- サービス定義jsonを置くDir作成し、Web-UI用を作成
$ sudo mkdir /etc/consul.d && cd /etc/consul.d
$ sudo vim web_ui.json
{
"ui_dir":"/var/www/consul-web-ui",
"addresses":{"http":"0.0.0.0"}
}
consul-server起動
$ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=consul-server -bind=10.0.1.155 -config-dir /etc/consul.d &
consul agent -server:エージェントをサーバ状態にする
-bootstrap-expect=1:consulサーバを1台で構成することを明示的に記述
-data-dir:データ保管場所を記述
-bind:複数のNICがある場合にIP指定
-node:表示名
-data-dir:サービス定義json格納DIR
確認
$ sudo consul members
Node Address Status Type Build Protocol DC
consul-server 10.0.1.155:8301 alive server 0.6.4 2 dc1
consul-client起動
ファイルダウンロード〜はconsul-serverと同じ手順を踏む(Web-uiファイルは不要)
server~client間はtcp:8300,8301を明示的に許可
$ sudo consul agent -data-dir=/tmp/consul -node=consul-node1 -bind=10.0.0.90 -join=10.0.1.155 &
-join:consulサーバのIP
クラスタへジョインされたことを確認
$ sudo consul members
Node Address Status Type Build Protocol DC
consul-node1 10.0.0.90:8301 alive client 0.6.4 2 dc1
consul-server 10.0.1.155:8301 alive server 0.6.4 2 dc1
web-ui
8500ポート指定して接続
http://<server-hostname>:8500/ui