为什么我们会看到两个 Docker 容器之间的流量出现随机延迟?

为什么我们会看到两个 Docker 容器之间的流量出现随机延迟?

我正在查看 Docker Swarm 主机,它是我们的 Docker Swarm 集群中唯一的主机(不,不推荐)。

由于一个Moby 中的 DNS 问题我们通过主机的外部 IP(192.168.1.50)或通过docker_gwbridge(172.18.0.1)发送容器内流量。这是可行的,因为这些请求将被 DNAT 到 172.18.0.2(位于处理 VIP/负载平衡功能的 Docker 容器前面)

我们随机发现 nginx 容器和 memcached 容器(两个不同的容器)之间的请求持续时间需要 1 秒或更长时间。

我们通过运行来看到这一点mc_conn_测试器在 nginx 容器内。

  • 当两个容器之间的流量通过 192.168.1.50 时,当我们在测试中使用 192.168.1.50 时,mc_conn_tester.pl 会报告大量 1 秒请求。如果我们针对 172.18.0.1 运行 mc_conn_tester.pl,则看不到任何 1 秒请求。

  • 当两个容器之间的流量通过 172.18.0.1 时,当我们在测试中使用 172.180.1 时,mc_conn_tester.pl 会报告大量 1 秒请求。如果我们针对 192.168.1.50 运行 mc_conn_tester.pl,则看不到任何 1 秒请求。

什么可能导致这种行为并导致 1 秒(及以上)的延迟,我们如何进一步调试它?

跟进 https://github.com/moby/moby/issues/36032

相关内容