Node Address Status Type Build Protocol
node01 127.0.0.1:8301 alive server 0.4.0 2
node02 127.0.0.2:8301 alive server 0.4.0 2
node03 127.0.0.3:8301 alive server 0.4.0 2
node04 127.0.0.4:8301 alive client 0.4.0 2
のConsul Clusterをスクリプトで簡単に構築できる
Mac OS X – Adding a loopback alias
# 追加
$ sudo ifconfig lo0 alias 127.0.0.2
$ sudo ifconfig lo0 alias 127.0.0.3
$ sudo ifconfig lo0 alias 127.0.0.4
# 確認
$ ifconfig lo0
http://www.consul.io/intro/getting-started/install.html
# インストール
$ brew install caskroom/cask/brew-cask
$ brew cask install consul
# 確認
$ consul -h
$ git clone git@github.com:kenjiskywalker/consul-test.git
$ cd consul-test/
/consul-test/
http://www.consul.io/downloads_web_ui.html
$ curl -L -o ./web_ui.zip https://dl.bintray.com/mitchellh/consul/0.4.0_web_ui.zip
$ unzip ./web_ui.zip
/consul-test/
$ sh ./consul-start.sh
# 確認
$ consul members -detailed
$ dig @127.0.0.1 -p 8600 node0{1,2,3,4}.node.consul.
/consul-test/
$ sh ./consul-stop.sh
# 削除
$ sudo ifconfig lo0 -alias 127.0.0.2
$ sudo ifconfig lo0 -alias 127.0.0.3
$ sudo ifconfig lo0 -alias 127.0.0.4
# 確認
$ ifconfig lo0
watches で nodes を見るようにして
nodeの増減時に特定のスクリプトを実行するようにした
['-']% head node0*/_hosts
==> node01/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
node04 127.0.0.4
==> node02/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
node04 127.0.0.4
==> node03/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
node04 127.0.0.4
==> node04/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
node04 127.0.0.4
['-']%
['-']% consul leave -rpc-addr=127.0.0.4:8400
2014/09/09 22:47:37 [INFO] agent.rpc: Accepted client: 127.0.0.4:60046
2014/09/09 22:47:37 [INFO] agent.rpc: Graceful leave triggered
2014/09/09 22:47:37 [INFO] consul: client starting leave
2014/09/09 22:47:38 [INFO] serf: EventMemberLeave: node04 127.0.0.4
2014/09/09 22:47:38 [INFO] serf: EventMemberLeave: node04 127.0.0.4
2014/09/09 22:47:38 [INFO] agent: requesting shutdown
2014/09/09 22:47:38 [INFO] consul: shutting down client
Graceful leave complete
2014/09/09 22:47:38 [INFO] agent: shutdown complete
['-']%
['-']%
['-']% head node0*/_hosts
==> node01/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
==> node02/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
==> node03/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
==> node04/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
['-']%
['-']% consul leave -rpc-addr=127.0.0.3:8400
2014/09/09 22:48:27 [INFO] agent.rpc: Accepted client: 127.0.0.3:60053
2014/09/09 22:48:27 [INFO] agent.rpc: Graceful leave triggered
2014/09/09 22:48:27 [INFO] consul: server starting leave
2014/09/09 22:48:27 [INFO] serf: EventMemberLeave: node03.dc1 127.0.0.3
2014/09/09 22:48:27 [INFO] consul: removing server node03.dc1 (Addr: 127.0.0.3:8300) (DC: dc1)
2014/09/09 22:48:27 [INFO] serf: EventMemberLeave: node03 127.0.0.3
2014/09/09 22:48:27 [INFO] consul: removing server node03 (Addr: 127.0.0.3:8300) (DC: dc1)
2014/09/09 22:48:27 [INFO] raft: Removed ourself, transitioning to follower
2014/09/09 22:48:27 [INFO] agent: requesting shutdown
2014/09/09 22:48:27 [INFO] consul: shutting down server
Graceful leave complete
2014/09/09 22:48:27 [ERR] http: Request /v1/catalog/nodes?index=514, error: rpc error: unexpected EOF
2014/09/09 22:48:27 [INFO] agent: shutdown complete
['-']%
['-']%
['-']% head node0*/_hosts
==> node01/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
==> node02/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
==> node03/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
==> node04/_hosts <==
node01 127.0.0.1
node02 127.0.0.2
node03 127.0.0.3
['-']%
['-']% ls -la node0*/_hosts
-rw-r--r-- 1 root staff 36 9 9 22:48 node01/_hosts
-rw-r--r-- 1 root staff 36 9 9 22:48 node02/_hosts
-rw-r--r-- 1 root staff 36 9 9 22:48 node03/_hosts
-rw-r--r-- 1 root staff 54 9 9 22:47 node04/_hosts
['-']%