CoreOS に etcd いれるのがどうもしっくりこないので、Consul をとりあえず試してみるなう。
とりあえず、 Consul いれましょう。
yaourt -S consul
Consulはもともと1バイナリ提供で、サービス定義は自分で書くものなのですが、ここはパッケージ導入の利点、一緒に入ってくれます。・・・ですが、 systemctl start consul ・・・すれども起動しない…(´・ω・`)
自動的に作られる /usr/lib/systemd/system/consul.service をチラ見してみると、-data-dir が無いから起動できないとか。さらに、自分の環境では private アドレスが複数あるので、ほかに通知するアドレスが自動では決まらない、と怒られました。
うん、デフォルトだと、いろいろ設定が足りない模様…。
/etc/default/consul を環境変数として読むことになってて、 consul 起動時に CONSUL_FLAGS を引数に与えるようになってるので、ここを利用して、必要な引数を与えておきます。
# Configure consul flags CONSUL_FLAGS=-server -bootstrap-expect=1 -data-dir=/tmp/consul -advertise=192.168.99.100
- -server … 値を保持するサーバにする(これをつけないと、ただ、ほかの consul サーバに問い合わせるだけになってしまう
- -bootstrap-expect … 何人集まったらリーダ選出を始めるか。今回はとりあえず1でやってみる。
- -data-dir … データをどこにおくか
- -advertise … 他のノードに自分のIPを知らせるときに使う値。通常、Private IP が自動的に選ばれるけど、複数( Heyper-VのネットワークやDockerのネットワークで複数のIPを持ってる)場合は、明示的に指定して上げる
この状態で、systemctl start consul で起動したところ、無事起動した模様…あとは確認!
localdev /home/naou% consul info agent: check_monitors = 0 check_ttls = 0 checks = 0 services = 1 build: prerelease = revision = version = 0.7.0 consul: bootstrap = true known_datacenters = 1 leader = true leader_addr = 192.168.99.100:8300 server = true …
よし。
とりあえず、動き始めた!