docker swarm の Network機能をちょっといじめてみる
Docker swarm を仕事で使っているのですが、最近ネットワーク周りで不可解な現象が頻発。
お仕事で使っているときにコンテナ間のネットワーク周りが不安定だと苦情が。
泣ける。
もしかしたら、一つのネットワークの中にコンテナを詰めすぎるとだめなのかな?
ってことで自宅で検証してみました。
検証環境
検証環境は以下の通り
root@docker-01:~# docker -H localhost:12375 info Containers: 124 Running: 124 Paused: 0 Stopped: 0 Images: 5 Server Version: swarm/1.2.5 Role: primary Strategy: spread Filters: health, port, containerslots, dependency, affinity, constraint Nodes: 2 docker-01: 192.168.56.102:2375 └ ID: 5DH2:HZB5:FHVI:RRDB:YFCB:P3OL:ZMZG:K5D4:OKJ2:ORNZ:FVLY:2BRF └ Status: Healthy └ Containers: 62 (62 Running, 0 Paused, 0 Stopped) └ Reserved CPUs: 0 / 1 └ Reserved Memory: 0 B / 777.5 MiB └ Labels: kernelversion=4.4.0-38-generic, operatingsystem=Ubuntu 16.04.1 LTS, storagedriver=aufs └ UpdatedAt: 2016-10-08T15:10:38Z └ ServerVersion: 1.12.1 docker-02: 192.168.56.103:2375 └ ID: RBJK:2HDX:XWZ2:7Q6A:VJXP:BTY4:VFGD:XWXF:NGZT:VAWZ:DRMG:SYIA └ Status: Healthy └ Containers: 62 (62 Running, 0 Paused, 0 Stopped) └ Reserved CPUs: 0 / 1 └ Reserved Memory: 0 B / 777.5 MiB └ Labels: kernelversion=4.4.0-38-generic, operatingsystem=Ubuntu 16.04.1 LTS, storagedriver=aufs └ UpdatedAt: 2016-10-08T15:10:12Z └ ServerVersion: 1.12.1 Plugins: Volume: Network: Swarm: NodeID: Is Manager: false Node Address: Security Options: Kernel Version: 4.4.0-38-generic Operating System: linux Architecture: amd64 CPUs: 2 Total Memory: 1.518 GiB Name: f00aba04157f Docker Root Dir: Debug Mode (client): false Debug Mode (server): false WARNING: No kernel memory limit support
検証項目
一つのネットワークの中に コンテナをいっぱい(120個)詰め込んでみる。
以下のような スクリプトを書いてコンテナをたくさん作って overlay ネットワーク につっこんでみました。
#! /bin/bash for i in {1..120} do docker -H localhost:12375 run -dP --net test --name con$i -h con$i moremagic/ubuntu-sshd done;
全く問題なし。
ネットワークの切り替えが不安定なのかな?
以下のようなスクリプトを書いてtestネットワークから test2ネットワークに
すべてのコンテナを移動してみました。
#! /bin/bash for i in {1..120} do docker -H localhost:12375 network connect test2 con$i docker -H localhost:12375 network disconnect test con$i done;
やっぱり全く問題ありません。
ノードを強制シャットダウン
Dockerノードを停止させ、再起動
その後、コンテナをすべて起動してネットワークの状態が復元するかテストしてみました。
## 再起動したノード内で docker start `docker ps -a -q`
問題なく起動でき、ネットワークの復元にも成功しました。
ネットワークの数を増やす
Overlayネットワークの数をたくさん追加してみました。
#! /bin/bash for i in {1..120} do docker -H localhost:12375 network create -d overlay ovelay-net-$i done;
問題ありませんでした。
そうなるとなんで不安定になったんだろう?
いろんなバージョンが混在している環境だからかな?
もう少し問題が起きそうなパターンを考えてみよう。。。
moremagic
2016-10-08