来自主机的Docker DNS解析速度变慢

时间:2018-07-03 16:54:24

标签: java docker dns ignite

在RedHat 7.5上运行Docker 18.03,我遇到一个问题,从主机到容器的DNS解析需要15到20秒。所有其他DNS查询(包括容器内部)都可以。

我们的设置是一个在容器内运行的Apache Ignite集群,在主机上,我们运行一个连接到该集群的Java应用程序。在初始化期间,我们看到将应用程序连接到Ignite之前大约有一分钟的延迟。几个jstack和对Ignite代码的研究表明,当它第一次连接到Ignite群集时,它正在为一堆IP执行IP->主机名解析。

我编写了一个快速测试,以模拟尝试连接到Ignite群集时主机应用程序正在做什么:

https://gist.github.com/michael-pratt/a27b10c81b35ada3a4619eb48cad9ae5

应用程序为所有网络接口的所有非链接本地地址调用InetAddress.getHostName()。输出显示所有容器IP需要很长时间,而其他IP则以毫秒为单位解析:

Tue Jul 03 16:27:46 GMT 2018 Resolving hostname for /172.19.0.1
Tue Jul 03 16:28:06 GMT 2018   ---> 172.19.0.1
Tue Jul 03 16:28:06 GMT 2018 Resolving hostname for /172.18.0.1
Tue Jul 03 16:28:25 GMT 2018   ---> 172.18.0.1
Tue Jul 03 16:28:25 GMT 2018 Resolving hostname for /172.19.1.1
Tue Jul 03 16:28:44 GMT 2018   ---> 172.19.1.1
Tue Jul 03 16:28:44 GMT 2018 Resolving hostname for /172.17.0.1
Tue Jul 03 16:29:03 GMT 2018   ---> 172.17.0.1
Tue Jul 03 16:29:26 GMT 2018 Resolving hostname for /0:0:0:0:0:0:0:1%lo
Tue Jul 03 16:29:26 GMT 2018   ---> localhost
Tue Jul 03 16:29:26 GMT 2018 Resolving hostname for /127.0.0.1
Tue Jul 03 16:29:26 GMT 2018   ---> localhost

我们正在运行2个docker网络(除了创建的标准docker网络之外),它们都处于桥接模式且子网稍有不同:

    "Name": "cache_network",
    "Id": "222e5e722432993bd21fb767e76ee01d8d5b7c135dd6150c4801ee46df396ae3",
    "Created": "2018-06-04T08:31:09.52399079-06:00",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": {},
        "Config": [
            {
                "Subnet": "172.19.1.0/25",
                "Gateway": "172.19.1.1"
            }
        ]
    },
    "Internal": false,
    "Attachable": true,
    "Ingress": false,

    "Name": "app_network",
    "Id": "f1f304db94ace6495e6db8b8c9e79b8fc5638c40461f3677572b9728d1fea1bc",
    "Created": "2018-06-04T08:31:09.35800211-06:00",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": {},
        "Config": [
            {
                "Subnet": "172.19.0.0/25",
                "Gateway": "172.19.0.1"
            }
        ]
    },
    "Internal": false,
    "Attachable": true,
    "Ingress": false,

值得一提的是,该问题在使用Docker的本地环境以及我们的Kubernetes环境中均会发生。我希望这对我们的docker网络设置或点燃配置有些愚蠢,因为主机上的所有其他应用都能正常工作。

0 个答案:

没有答案