Я работаю над преобразованием нашего приложения в более мелкие службы. Я добавляю новые службы на внутренний сервер (т. Е. Недоступные для всех), а затем делаю записи в файле / etc / hosts наших веб-серверов. Образец записи
10.160.x.xx newservice.mydomain.com
Такой подход работает. Но если я тестирую службу с веб-сервера, я вижу, что работает ping, а не nslookup. Так ping newservice.mydomain.com
успешно, а не nslookup newservice.mydomain.com
Почему это так? Как сделать так, чтобы nslookup тоже работал?
nslookup
спрашивает DNS-серверы, и они ничего не знают о вас hosts
файл, поэтому они не будут разрешать содержащиеся в нем записи. Если ты хочешь hosts
чтобы файл был доступен через поиск DNS, вам необходимо использовать DNS-сервер, который знает о нем (например, systemd-resolved
можно настроить на анализ файла).
Однако, используя hosts
запись здесь кажется избыточной, поскольку каждый экземпляр вычислительного движка может быть разрешен с помощью облачного DNS-сервера Google по умолчанию (169.254.169.254
). Имя каждой вычислительной машины [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
(подробнее о внутреннем DNS можно прочитать здесь), поэтому вы должны иметь доступ к своим серверам под этим именем.