我们使用 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 流量。
我们被难住了。为什么我们会看到这些管理节点之间的流量如此之大?如果我们降级然后提升管理器节点,流量会清理一段时间。但是,它最终会再次增加。这可能是什么原因造成的?
我有两个虚拟机 ubuntu16 来宾,它们可以通过仅主机网络进行通信:172.28.128.0/16
我使用docker docs 中的步骤创建了一个 docker swarm 。以下是我的群的状态:
vagrant@master:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
127fuzxjq2j3ashcteu8fo248 worker1 Ready Active
43l953k75lv14uw7ni2hbib5j * master Ready Active Leader
Run Code Online (Sandbox Code Playgroud)
我可以使用这个群来成功运行服务。但是是否可以通过 docker 获取节点的基于 172.28.128.0/16 的 IP 地址?我尝试查看docker commandline reference以及docker remote api 。我的目标是通过远程 api 联系任何 swarm 节点,但为此我需要它的底层 api,在该 api 上启用远程 docker 守护程序进行侦听。
假设我有 Docker Swarm 服务myservice1和myservice2. 如何删除这些服务并等待关联的容器停止?
在 Centos 7.4 上,我正在设置一个群,我想在其中运行多个可在端口 80/443 上访问的路由器。
目的是在单个集群上托管多个环境(测试/登台...),所有环境都是对称的。
我使用 Docker 17.12.0-ce 和 Traefik v1.4.6 作为路由器。
基本思想是每个环境都有一个虚拟 IP 地址,并仅在该地址上发布 Traefik 端口。这对于 Docker swarm 来说是不可能的,所以我必须让 Traefik 实例监听端口 81/82 等,并以某种方式将流量从 VIP:80 带到 :81/:82。
集群管理器中所有环境的虚拟 IP 地址均由 Keepalived 处理。
Traefik 的相关 docker 服务配置:
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 81,
"PublishMode": "ingress"
},
# netstat -anp|grep 81
tcp6 7 0 :::81 :::* LISTEN 4578/dockerd
Run Code Online (Sandbox Code Playgroud)
firewalld 设置为允许流量到达端口 80、81、82 等
直接在 VIP 上的 81 端口访问 Traefik 公开的后端服务是可行的。
在未正确配置任何内容的情况下访问 VIP 上的 80 端口会导致连接被拒绝
Traefik docker 实例运行在我用于以下测试的同一主机上。 …