Разрешение DNS Docker медленное с хоста - PullRequest
0 голосов
/ 03 июля 2018

Запуск Docker 18.03 на RedHat 7.5, у меня проблема, когда разрешение DNS с хост-машины на контейнеры занимает 15-20 секунд. Все остальные DNS-запросы (включая внутренние контейнеры) в порядке.

Наша установка представляет собой кластер Apache Ignite, который работает внутри контейнера, и на хост-компьютере мы запускаем приложение Java, которое подключается к кластеру. Во время инициализации мы видим задержку около минуты, прежде чем приложение будет подключено к Ignite. Несколько jstacks и исследование кода Ignite показывают, что он выполняет разрешение IP -> имени хоста для нескольких IP-адресов при первом подключении к кластеру Ignite.

Я написал быстрый тест, который эмулирует, что делает приложение хост-машины при попытке подключиться к кластеру 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

Мы работаем с двумя сетями докеров (в дополнение к стандартным сетям докеров, которые создаются), как в режиме моста, так и с немного различными подсетями:

    "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 Network или воспламенит конфигурацию, так как все другие приложения на хост-машине работают нормально.

...