6月13日に Consul の最新版 v.0.3.0 がリリースされていました。いくつかの機能追加や、改善が図られています。以下、v.0.2 からの変更点と、v.0.4 のロードマップに向けたメモです。
てっきり、このブログに書いたと思って居たのですが、完全に私の思い違いでした。Qiita に投稿したつもりで、自己満足してしいたようです、気づきませんでした。。Qiita いいですよね。ブログに書き記すような重たいことじゃなくて、日々のメモを、マークダウンで手軽に書けるのは便利なところ。これはいいものだ。作った中の人、すごい。
さて、以下 ChangeLog の中を、日本語で軽く追っていきます。
ところで、Consul って何?という方は、先日資料を作りましたので、こちらをご覧ください (ご注文は自動化ですか? Serf と Consul を使って運用を楽しくする話 @ JTF2014)。
■ v.0.3 の変更点
細かなバグ修正以外、大きな機能は以下の通りです。
- KVS のロック機能、セッション機能の搭載
- DNS キャッシュ ( TTL ) の対応
- Web UI の改善
- パフォーマンス改善
(6/26 追記;新しい機能に関するドキュメントについては、別途、参考訳を書きました。参考程度となりますが、よろしければどうぞ。)
■ KVS のロック機能・セッション機能
機能的な目玉としては、KVS の値をロックできるようになりました。ロックされている値は、更新や削除を行う事ができません。ロックの設定・解除は、Web UI を通してか、HTTP API を使えるようになります。
ドキュメントによると、スプリットブレイン対策にもなるようで、可用性をとるか安全性を取るか、利用者側で選択出来るようですね。あとは、セッション機能が実装されましたが、これは次のバージョンで本格実装される、クライアント側のリーダ選出に向けてようです。
これは、Consul サーバのリーダ選出ではなく、サービスのマスターを特定する機能のようです。現時点でも、有る程度できるようで、自分も試そうと思っていますが、まだ試せていません。次の v.0.4 から正式に使えるみたいですね。今後に期待です。
(一応、今回も自分の参考訳っぽいものを作りましたけど、必要な方いらっしゃいますか・・・?)
■ DNS インターフェースに TTL 機能が追加
Qiita で別途まとめていましたので、以下ご覧下さい。
Consulのノードやサービス検出でTTL値の設定 – Qiita
http://qiita.com/zembutsu/items/4965ec2e3ff7838673a1
Consulの名前解決にDNS Forwardingを使う方法 – Qiita
http://qiita.com/zembutsu/items/ea05fbeff06cafb5ec2e
■ Web UI の改善
Web UI が微妙に調整され、使いやすくなりました。セッションやロックの状況を確認したり、KVS を操作するのであれば、Web を通した作業が、比較的やりやすいと思います。
使うには、Consul 本体とは別のパッケージを取得する必要があります。
# wget -O 0.3.0_web_ui.zip https://dl.bintray.com/mitchellh/consul/0.3.0_web_ui.zip # unzip 0.3.0_web_ui.zip
展開したあとは、そのディレクトリを、適当な場所に移動させます。
# mkdir /opt/consul
# mv ./dist/ /opt/consul/webui
あとは、consul server 起動時に ‘-ui-dir=/opt/consul/webui/’ のように指定することで、Web UI が使えるようになります。http://<ホスト>:8500/ にブラウザからアクセスすると、自動的に画面が遷移します。
■パフォーマンス改善
個人的に嬉しいのが、この改善点です。Serf に比べると Consul は、コマンドの応答が「もっさり」している印象がありました。ですが、v.0.3 になって、操作感覚は Serf のそれと同じ感じです。
ちなみに、@ijin さんの JTF2014 の発表資料でも、p.35 以降にパフォーマンス計測の記録が掲載されいます。他にも Consul の概要がスッキリまとめられていて、とても良い資料ですね。
- About Consul // Speaker Deck
https://speakerdeck.com/ijin/about-consul
■ v.0.4 に向けて
Consul は順調に開発がすすんでいる模様です。Google Groups への作者さんによる投稿を読むと、イベントハンドラ等、Serf のイベント・クエリが利用可能になる事を目指すようです。他にはロック機能を拡充させ、クライアントによるサービスのリーダ選出も検討されているようですね。
そして、次のメジャーバージョンで、いよいよ Serf の機能が取り込まれてくるか…!! ( ゚д゚) ガタッ
そうなると、色々出来る事が増えそうです。現行バージョンでは、Serf と Consul を組みあわせ、ある意味でトリッキーな方法を使っている所が、Consul 単体で、割と手軽にできそうです。
■ 参考
- Changelog.md – 0.3.0 (June 13, 2014)
https://github.com/hashicorp/consul/blob/master/CHANGELOG.md#030-june-13-2014