Consul を使用した DockerSwam を試す

前回 Docker Swarm を試してみる - moremagicの日記 の記事で、DockerSwarmを試した時は DockerHub 側に node情報を保管する?方式のようでした。
そのため今回は Consul を使用して同じことやってみました。


環境情報はDocker Swarm を試してみる - moremagicの日記の時と全く同じです。

# consul local で起動します。
docker run --name consul -d \
    -p "8500:8500" \
    -h "consul" \
    --restart=always \
    progrium/consul -server -bootstrap

# swarm manager を Consul を使用して起動します
docker -H tcp://192.168.1.6:2375 run -d -p 12375:2375 swarm manage --replication --advertise 192.168.1.6:12375 consul://192.168.1.6:8500/nodes


# swarm ノード起動
docker -H tcp://192.168.1.6:2375 run -d swarm join --advertise=192.168.1.6:2375 consul://192.168.1.6:8500/nodes
docker -H tcp://192.168.1.7:2375 run -d swarm join --advertise=192.168.1.7:2375 consul://192.168.1.6:8500/nodes

# 確認
root@ubuntu:~# docker -H tcp://192.168.1.6:12375 info
Containers: 1
Images: 1
Server Version: swarm/1.1.3
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
 ubuntu: 192.168.1.7:2375
  └ Status: Healthy
  └ Containers: 1
  └ Reserved CPUs: 0 / 2
  └ Reserved Memory: 0 B / 1.018 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.19.0-33-generic, operatingsystem=Ubuntu 15.04, storagedriver=devicemapper
  └ Error: (none)
  └ UpdatedAt: 2016-03-10T05:40:06Z
 ubuntu: 192.168.1.6:2375
  └ Status: Pending
  └ Containers: 3
  └ Reserved CPUs: 0 / 2
  └ Reserved Memory: 0 B / 1.018 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.19.0-33-generic, operatingsystem=Ubuntu 15.04, storagedriver=devicemapper
  └ Error: ID duplicated. DZ3Q:GYC5:JU6F:KELO:HXKC:2WNX:L2DJ:CZIM:YQX5:CVXP:FAZN:PXFQ shared by this node 192.168.1.6:2375 and another node 192.168.1.7:2375
  └ UpdatedAt: 2016-03-10T05:39:58Z
Kernel Version: 3.19.0-33-generic
Operating System: linux
CPUs: 2
Total Memory: 1.018 GiB
Name: 808ea99c39d6
root@ubuntu:~# 

きちんと2台 起動し、認識しました。
結構大変だった・・・

Consul のWebGUIを見ても特にNode情報は見えませんでした。
これ、ほんとにNode情報保管されてるのかな・・・?


資料
http://docs.docker.jp/swarm/discovery.html
https://docs.docker.com/swarm/install-manual/
http://blog.takanabe.tokyo/2015/12/21/1665/
http://qiita.com/zembutsu/items/d1ab2a23e0bf1507975d

追記;
swarm manager 起動時は、Docker NAT内 IPを指定しないとダメなようです。
また、Node情報はKeyに保管されるようです
以下コマンドで確認可能。

curl http://localhost:8500/v1/kv/?recurse