Edited at

docker swarm on aws gatcha

More than 3 years have passed since last update.


tl;dr


  • AWSでdocker swarmするときにはtcp:2377,7946 udp:7846,4789への同じsecurity groupのノードからのアクセスを相互に許可しよう。


awsで本格的にdocker swarmするときのハマリどころ


  1. swarm serviceのポートの問題


    • swarmサービスは2377に別サーバーとして立ち上がるのだが、docker-machine 0.8.0が自動的に作るsecurity groupは2377を勝手には開けてくれない

    • 一旦docker-machineにsecurity groupを作ってもらって、そこに2377をカスタムで自分のsecurity groupからのみ許可する、という風にするのが一番いいような気がする



  2. overlay networkのポートの問題(結局security groupの設定の問題)



    • https://docs.docker.com/engine/userguide/networking/ で必要とされている、overlay networkのためのtcp/udpのポートもdocker-machineはデフォルトで開けない

    • 1.で行ったように、udp:4789とtcp/udp:7946を開けてあげる必要がある

    • docker-machineがインスタンスを作成した後に設定を足しても、うまくいかなかったことがあったので注意。




最終的なsecurty groupの設定

proto port allow_from

TCP 22 0.0.0.0/0

TCP 2376 0.0.0.0/0

TCP 2377 same security group

UDP 7946 same security group

TCP 7946 same security group

UDP 4789 same security group


所感


  • 多分、docker-machine createに--for-swarmみたいなオプションを足して、その場合swarmに十分な設定を追加で行ってくれるようにすべきなのだろうと思う。


  • EDIT: docker-machine 0.8.1が出ているようなので、何か対応されているかもしれない