У меня есть два внутренних DNS-сервера, и на всех моих серверах они оба находятся в resolv.conf. Наш основной DNS-сервер вышел из строя, и внезапно ни один сервер не мог видеть друг друга. Я отредактировал несколько серверов resolv.conf вручную и зафиксировал первый (неработающий) DNS-сервер, и эта машина сразу же сможет снова пинговать. Что я сделал не так, он автоматически не переключается на вторичный DNS-сервер по истечении времени ожидания?
# File managed by puppet
nameserver 192.168.146.100
nameserver 192.168.159.101
;nameserver 72.14.188.5
domain example.com
search example.com
Вероятно, что тайм-аут по умолчанию слишком велик, и в результате приложения ломаются. Имейте в виду, что преобразователь будет запускаться с первой записи в /etc/resolv.conf - каждый раз, когда он вызывается (независимо от кешированных записей).
Попробуйте добавить что-то вроде «options timeout: .5» или подобное (см. Справочную страницу - http://linux.die.net/man/5/resolv.conf), чтобы локальный преобразователь быстрее попытался использовать альтернативные серверы имен. Будьте осторожны, чтобы сделать это значение слишком низким, так как некоторые рекурсивные поиски могут занять довольно много времени.
В дополнение к уменьшению тайм-аута вы можете добавить options rotate
что заставляет преобразователь различать, с какого сервера имен он начинается. Это означает, что, когда первый сервер недоступен, по крайней мере, некоторое время распознаватель запускается с запроса второго сервера. Конечно, это означает, что последствия отказа второго сервера имен более заметны.
options rotate timeout:3
Он должен быть прозрачным и просто работать. Все, что я могу думать, это ненормальный тайм-аут на первом сервере. Сможете ли вы достоверно воспроизвести проблему?