AWSで docker-swarmクラスタを立ち上げようとして失敗した話


Docker Advent Calendar 2015 18日目の予定だった記事です。
もう 21日ですね、当アドカレ関係者各位ごめんなさい

docker-machine 経由で consul を利用した swarm クラスタを
組みたかったのですが、失敗した話です。

overlay networkのパフォーマンスを測定したかった

お気軽に試すなら Get started に VirtualBox での例があったり
DigitalOcean なら パフォーマンス測定結果 もあったのですが
実運用で一番使っている AWS でも検証してみたかったのです。

が、失敗しました。

うまくいかなったスクリプトは こちら1 です・・
(↑クレデンシャル、Subnet、SecurityGroupは要設定)
必要なコンテナは立ち上がりますが、ノードは join してくれず。

ちなみに、これまでの選択肢だった --net=host--net=bridge
そして Docker なしそれぞれのネットワークパフォーマンスは
アムステルダム大の学生が検証 していたのでご参考までに。
ほとんど差はないよ、って結論ですね。

さて、ここで 記事が終わると悲しいのでもう少し書きます。

docker-machine で t2.nano on AWS を起動する

実はこれ、いまはまだ動きません。

HVM EBS-Backed な、多くの AMI はルートボリュームを
/dev/xvda でインスタンスを起動しないといけない2 のですが、
docker-machine は現状 /dev/sda1ハードコード されており
EC2は起動せず、一見それとわからないエラーを吐いて死にます3

docker-machineで CoreOS on AWSを起動する

試したことある方いますか?

これも運用で回避しないと動きません。たぶん。
こちらは深追いしていないのですが、CoreOS provisioner
上書きしている systemd の docker.service が起動しないことが。

なので、以下のように暫定対応することで
docker-machine の管理下に入ります。

2〜3行目が重要
$ docker-machine create --driver amazonec2 ec2
$ docker-machine ssh ec2 sudo systemctl start docker
$ docker-machine regenerate-certs ec2

systemd 難しい。
 


  1. どなたか正常に複数ホストでクラスタが組めて、その上でコンテナが起動できた方がいらっしゃったらご教示くださいませ。。 

  2. EC2コンソールから操作してると勝手に整合性を取ってくれるので気づきません。CLI好きな方ははまったことのある方もいるはず 

  3. initiated shutdown。これ がマージされるのを祈りましょう・・