Dockerコンテナ間のオーバーレイネットワーク接続遅延時間は1の倍数です。

Dockerコンテナ間のオーバーレイネットワーク接続遅延時間は1の倍数です。

トラフィック(接続頻度)が高いオーバーレイネットワークで互いに通信する2つのコンテナは、時々ほぼ正確に1秒の倍数で接続遅延を経験します。 2 つのコンテナが同じホスト上で実行されるのか、2 つの物理マシン間で実行されるのかは重要ではありません。

  • Pingにはまったく遅延がなく、TCP接続のみが影響を受けます。
  • これはDNSの問題ではありません。他のコンテナのIPアドレスを使用して接続をテストします。

私は以下に基づいていくつかのカーネルパラメータを設定しようとしました。https://github.com/moby/moby/issues/35082私の問題のように聞こえるので

for ns in /var/run/docker/netns/lb_* /var/run/docker/netns/ingress_sbox
do
    nsenter --net=$ns sysctl -w net.ipv4.vs.conn_reuse_mode=0;
    nsenter --net=$ns sysctl -w net.ipv4.vs.expire_nodest_conn=1;
    nsenter --net=$ns sysctl -w net.ipv4.vs.expire_quiescent_template=1;
done

しかし、そこには幸運はありません...

コンテナの観点から見ると、すべての項目でこれを実行するとパラメータが変更されて/var/run/docker/netns/*いるように見えますが、待ち時間の頻度はまだ変わりません。

ドッカーバージョン20.10.12。現在のカーネルはであり、文書5.15.32によるとパッチは次から出たようです。net/netfilter/ipvs/ip_vs_core.chttps://lkml.org/lkml/2020/6/16/254すでに何らかの形でカーネルソースコードにマージされています。

追加情報:

  • net.ipv4.vs.conntrack = 0
  • net.netfilter.nf_conntrack_tcp_be_liberal = 1

関連情報