OSS編~オーケストレーションツール Consul 01 インストール編~

Serfはノードベースのサービスディスカバリーやオーケストレーションのツールであり、

Consulはサービスレベルでのサービスディスカバリーとコンフィグレーションです。

また、SerfはCAPでいうAP(可用性のために一貫性を犠牲にしている)システムですが、

ConsulはSerfより高度なサービスレベルの抽象化に特化しており、複数のデータセンターでのヘルスチェックやKVSのような高レベルを提供する為にCP(一貫性のために可用性を犠牲にしている)システムとなります。

一長一短があり、利用シーンによりどちらが適しているかが決まると思います。

Consulのインストール

1.バイナリファイルの取得

バイナリファイルを取得してパスを通します。

1$ wget https://dl.bintray.com/mitchellh/consul/0.5.0_linux_amd64.zip2$ unzip 0.5.0_linux_amd64.zip3$ sudo mv consul /usr/local/bin/

バージョンを確認します。

1$ consul -v2Consul v0.5.03Consul Protocol: 2 (Understands back to: 1)

Consulの起動

1.エージェントの起動

ConsulをServerエージェントで起動してみます。

1$ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul2==> WARNING: BootstrapExpect Mode is specified as 1; this is the same as Bootstrap mode.3==> WARNING: Bootstrap mode enabled! Do not enable unless necessary4==> WARNING: It is highly recommended to set GOMAXPROCS higher than 15==> Starting Consul agent...6==> Starting Consul agent RPC...7==> Consul agent running!8         Node name: 'vagrant-ubuntu-trusty-64'9        Datacenter: 'dc1'10            Server: true (bootstrap: true)11       Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)12      Cluster Addr: 10.0.2.15 (LAN: 8301, WAN: 8302)13    Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false14             Atlas: <disabled>1516==> Log data will now stream in as it occurs:1718    2015/03/11 16:55:42 [INFO] raft: Node at 10.0.2.15:8300 [Follower] entering Follower state19    2015/03/11 16:55:42 [INFO] serf: EventMemberJoin: vagrant-ubuntu-trusty-64 10.0.2.1520    2015/03/11 16:55:42 [INFO] serf: EventMemberJoin: vagrant-ubuntu-trusty-64.dc1 10.0.2.152122    2015/03/11 16:55:42 [INFO] consul: adding server vagrant-ubuntu-trusty-64 (Addr: 10.0.2.15:8300) (DC: dc1)23    2015/03/11 16:55:42 [INFO] consul: adding server vagrant-ubuntu-trusty-64.dc1 (Addr: 10.0.2.15:8300) (DC: dc1)24    2015/03/11 16:55:42 [ERR] agent: failed to sync remote state: No cluster leader25    2015/03/11 16:55:43 [WARN] raft: Heartbeat timeout reached, starting election26    2015/03/11 16:55:43 [INFO] raft: Node at 10.0.2.15:8300 [Candidate] entering Candidate state27    2015/03/11 16:55:43 [INFO] raft: Election won. Tally: 128    2015/03/11 16:55:43 [INFO] raft: Node at 10.0.2.15:8300 [Leader] entering Leader state29    2015/03/11 16:55:44 [INFO] consul: cluster leadership acquired30    2015/03/11 16:55:44 [INFO] consul: New leader elected: vagrant-ubuntu-trusty-6431    2015/03/11 16:55:44 [INFO] raft: Disabling EnableSingleNode (bootstrap)32    2015/03/11 16:55:44 [INFO] consul: member 'vagrant-ubuntu-trusty-64' joined, marking health alive33    2015/03/11 16:55:44 [INFO] agent: Synced service 'consul'

2.メンバーリストの取得

別ターミナルからメンバーリストを取得してみます。

1$ consul members2Node                      Address         Status  Type    Build  Protocol3vagrant-ubuntu-trusty-64  10.0.2.15:8301  alive   server  0.5.0  2

3.HTTP,DNSインターフェースによる取得

httpによる取得を試してみます。

1$ curl localhost:8500/v1/catalog/nodes2[{"Node":"vagrant-ubuntu-trusty-64","Address":"10.0.2.15"}]

続いてDNSによる取得を試してみます。

1$ dig @127.0.0.1 -p 8600 vagrant-ubuntu-trusty-64.node.consul23; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1 -p 8600 vagrant-ubuntu-trusty-64.node.consul4; (1 server found)5;; global options: +cmd6;; Got answer:7;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 278108;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 09;; WARNING: recursion requested but not available1011;; QUESTION SECTION:12;vagrant-ubuntu-trusty-64.node.consul. IN A1314;; ANSWER SECTION:15vagrant-ubuntu-trusty-64.node.consul. 0 IN A    10.0.2.151617;; Query time: 7 msec18;; SERVER: 127.0.0.1#8600(127.0.0.1)19;; WHEN: Wed Mar 11 17:01:15 JST 201520;; MSG SIZE  rcvd: 106

いかがでしたでしょうか?

次回もお楽しみに!!!

この記事を書いた人

aws-recipe-user