nth*_*ign 5 networking docker docker-swarm
我们使用 3 个管理节点和 16 个工作节点运行 Docker Swarm。三个管理节点中的两个节点之间的网络 I/O 非常高。为了说明这一点,iftop
以下是三个管理器节点的输出:
vm71 (10.0.0.131)
vm71 => 10.0.0.130 39.3Mb 47.5Mb 49.3Mb
<= 802Kb 1.03Mb 1.07Mb
Run Code Online (Sandbox Code Playgroud)
vm70 (10.0.0.130)
vm70 => 10.0.0.131 798Kb 1.00Mb 1.00Mb
<= 40.9Mb 44.8Mb 44.8Mb
Run Code Online (Sandbox Code Playgroud)
vm75 (10.0.0.135)
vm75 => 10.0.0.131 9.50Kb 10.1Kb 9.51Kb
<= 7.83Kb 8.08Kb 7.56Kb
Run Code Online (Sandbox Code Playgroud)
如上所示,vm70 和 vm71 之间的流量大约是 vm75 和其他两个管理器之间的流量的 4,000 倍。我们将规则设置为在任何 swarm 管理器上不运行容器。这通过docker stats
在每个人身上运行得到证实。
下一个明显的问题是哪些进程正在生成这个网络 I/O。的输出netstat -tup
如下。我只显示与iftop
.
tcp6 0 46 vm71:2377 10.0.0.130:39316 ESTABLISHED 791/dockerd
Run Code Online (Sandbox Code Playgroud)
请注意,这是 tcp6 流量。
我们被难住了。为什么我们会看到这些管理节点之间的流量如此之大?如果我们降级然后提升管理器节点,流量会清理一段时间。但是,它最终会再次增加。这可能是什么原因造成的?
我建议使用 tcpdump 捕获网络请求,您将需要一个监视工具/脚本来监视何时到来并执行它。常见的罪魁祸首是内存突然增加相关性,如果主管理器内存使用量突然大幅增加,这是可以解释的。查看您的输出,这看起来只是在负载平衡时命中经理 2 并转移到领导者的请求。
归档时间: |
|
查看次数: |
116 次 |
最近记录: |