ども、 Kawacorp の cloudpack の かっぱ (@inokara) です。
はじめに
Consul 0.5 がリリースされたようなのでリリース内容を見ながら気になるところは試しながらチェックしていくので随時追記していく予定です。
参考(謝辞)
@zembutsu さん、ありがとうございます!
ヘルプで見るオプション比較
0.5
[root@be9b37845581 bin]# consul --help usage: consul [--version] [--help][ ] Available commands are: agent Runs a Consul agent event Fire a new event exec Executes a command on Consul nodes force-leave Forces a member of the cluster to enter the "left" state info Provides debugging information for operators join Tell Consul agent to join cluster keygen Generates a new encryption key keyring Manages gossip layer encryption keys leave Gracefully leaves the Consul cluster and shuts down lock Execute a command holding a lock maint Controls node or service maintenance mode members Lists the members of a Consul cluster monitor Stream logs from a Consul agent reload Triggers the agent to reload configuration files version Prints the Consul version watch Watch for changes in Consul
0.4
[root@be9b37845581 bin]# ./consul-0.4 --help usage: consul [--version] [--help][ ] Available commands are: agent Runs a Consul agent event Fire a new event exec Executes a command on Consul nodes force-leave Forces a member of the cluster to enter the "left" state info Provides debugging information for operators join Tell Consul agent to join cluster keygen Generates a new encryption key leave Gracefully leaves the Consul cluster and shuts down members Lists the members of a Consul cluster monitor Stream logs from a Consul agent reload Triggers the agent to reload configuration files version Prints the Consul version watch Watch for changes in Consul
0.5 から keyring
と lock
と maint
オプションが追加になったようですな。
keyring とは
うっかり KVS の Key と関連しているのかと思ったら勘違い。Consul の暗号化サポートしており、暗号化で利用する鍵の管理で利用する(ようです)。自分自身は Consul で暗号化は利用したことが無いのでこのオプションがサポートされたことによるメリットについては不明…。
lock とは
Consul クラスタ内で稼働させておくサービス(Consul で管理するサービス)の数を固定するオプション。例えば 3 台のノードで構成される Consul クラスタにおいて hoge というサービスを 2 ノードで起動しておきたい場合に利用するようです。
あとで試したいと思います。
maint とは
maint
オプションは Consul クラスタからノードを一時的に切り離したい時に利用出来そう。
個人的に気になる機能
HTTP ヘルスチェック
従来バージョンのヘルスチェックはチェックスクリプト(Nagios のチェックスクリプトと互換性がある)を利用したヘルスチェックのみだったようですが HTTP リクエストを利用したヘルスチェックが加わりました。従来もスクリプトを駆使すれば HTTP によるヘルスチェックは可能だったがその手間が省けることになります。
以下は Consul クラスタ内のノードで稼働している API エンドポイントに対するヘルスチェックを行う例。
従来。
{ "check": { "id": "api-check", "name": "API live check", "script": "/usr/local/bin/check_http_api.sh", "interval": "10s" } }
上記のように設定しておいて、以下のようなスクリプト( check_http_api.sh
)を作る必要がありましたが…
#!/usr/bin/env bash status=`curl -LI http://localhost:5000/health -o /dev/null -w '%{http_code}n' -s` if [ $status = "200" ];then exit 0 else exit 2 fi
0.5 では直接いかのように HTTP のエンドポイントを指定出来るようになリました。
{ "check": { "id": "check-api", "name": "API live check", "http": "http://localhost:5000/health", "interval": "10s", "timeout": "1s" } }
これは便利だと思う。
Atlas との連携
Atlas とは Hashicorp が提供する Vagrant や Packer、Terraform、Consul を一元管理してアプリ開発から開発環境、本番環境へのデプロイ、運用までをトータルで行えるプラットフォームのようです。(ざっくりしすぎてすいません)
今回の 0.5 からこの Atlas を利用した上での自動クラスタリングがサポートされたようです。この機能については @takipone さんよりレポートされております(@takipone さん、ありがとうございます!)のでそちらを参考にしていただければと思いますが…一応、手元でも試してみました。
Atlas のアカウントにて token を発行して consul agent
を以下のように起動します。(token の発行方法等については割愛させて頂きます。)
consul agent -atlas-join -atlas-token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -atlas=inokappa/cluster1 -bootstrap -server -data-dir /opt/consul &
コマンドを実行すると以下のように Atlas 上からクラスタにジョインしたノードの情報を確認することが出来ます。
おお。一応、consul members
も。
# consul members 2015/02/28 07:58:26 [INFO] agent.rpc: Accepted client: 127.0.0.1:56365 Node Address Status Type Build Protocol 5535cc6b806e 172.17.0.3:8301 alive server 0.5.0 2 be9b37845581 172.17.0.2:8301 alive server 0.5.0 2
ということで…
ざっくりと Consul 0.5 を引き続き試していきます。
元記事はこちらです。
「今さらジローだけど Consul 0.5 をざっくり試す」