すいません、ちょっと気になったものでのかっぱ(@inokara)です。
はじめに
あの Vagrant や Serf でおなじみの hashicorp さんからまたまた ktkr なツールがリリースされました。
ん、あれ、あまり響きませんか?
あの、Vagrant や Serf の hashicorp さんですよ…(涙
ということでちょいダウンロードしてちょい使ってみました
そもそも consul-haproxy なにこれ(ダイナミックダイクマ)
This project provides consul-haproxy, a daemon for dynamically configuring HAProxy using data from Consul.
とあるので consul 使って HAProxy の設定をダイナミックダイクマに書き換えてしまおうというツールのようです。ざっとドキュメントを拝見した限りでは HAProxy には散々泣かされていると自負する自分からすると以下のようなメリットを感じました。
- Consul からバックエンド情報を取得してバックエンドを動的に書き換えられる(すげー!)
- もちろん、フロントエンドとバックエンドの関連付けも持たせられそう
パッと使ってみると単純に HAProxy の設定を生成するツール
バイナリのダウンロード
Consul や Serf と同様に consul-haproxy も郷(Go Lang)で書かれていますのでバイナリを落っことして来るだけです。
wget https://github.com/hashicorp/consul-haproxy/releases/download/v0.1.0/consul-haproxy_linux_amd64
試した環境は Amazon Linux なので consul-haproxy_linux_amd64 をダウンロードしてきます。
テンプレート作成
以下のようなテンプレートを in.conf として作成しておきます。
global daemon maxconn 256 defaults mode tcp timeout connect 5000ms timeout client 60000ms timeout server 60000ms listen http-in bind *:8000{{range .c}} {{.}}{{end}}
ポイントは {{range .c}}{{.}}{{end}}
の部分です。 c はタグみたいなものだと思って下さい。
HAProxy の設定を生成
上記のテンプレートを元に以下のように実行して設定を生成します。
./consul-haproxy_linux_amd64 -addr=demo.consul.io -in in.conf -backend "c=consul@nyc1:80" -backend "c=consul@sfo1:80" -dry
テンプレート内の c タグが展開され下記のように HAProxy の設定が標準出力に表示されました。
global daemon maxconn 256 defaults mode tcp timeout connect 5000ms timeout client 60000ms timeout server 60000ms listen http-in bind *:8000 server 0_nyc1-consul-1_consul 192.241.159.115:80 server 0_nyc1-consul-3_consul 198.199.77.133:80 server 0_nyc1-consul-2_consul 192.241.158.205:80 server 1_sfo1-consul-1_consul 107.170.195.169:80 server 1_sfo1-consul-3_consul 107.170.195.158:80 server 1_sfo1-consul-2_consul 162.243.155.82:80
ふぇえ。
ちょっとお待ち下さい
あまりこのツールの良さがここまでの書き方では伝わらなかったかもしれませんが、引き続き、動作確認の上で追記していきます!
元記事は、こちらです。