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