У нас есть два DNS-сервера, перечисленных в нашей NS-записи. Вчера вечером вышел из строя один из наших DNS-серверов. Как и ожидалось, некоторые DNS-серверы не разрешали наши имена хостов. Я предположил, что это будет временно и начнется работа, когда истечет TTL наших записей NS (1 час).
Более часа спустя я все еще получал таймауты DNS с настольных компьютеров, которые использовали серверы Earthlink, Verizon и OpenDNS. Я проверил, отвечает ли другой DNS-сервер:
dig @ns2.example.com www.example.com +short
Это сработало.
SOA
запись)?Это досадное раздражение. Предполагается, что несколько DNS-серверов повышают надежность, но на практике это часто дает обратный эффект.
Проблема в том, что клиент ждет ответа только определенное время, а сервер ждет примерно столько же времени. Допустим, у вас есть два DNS-сервера, A и B. Допустим, A работает, а B отказал. Это случилось:
Клиент подключается к серверу имен Z и запрашивает у него информацию. Z выбирает B и отправляет запрос.
Время ожидания клиента истекло, поскольку сервер имен Z не ответил.
Клиент пытается использовать сервер имен Y. Y выбирает B и отправляет запрос.
Сервер имен Z истекает время ожидания и пытается A. Он получает правильный ответ, но клиент больше не ждет.
Время ожидания клиента истекло, поскольку сервер имен Y не ответил.
Клиент сдается, поскольку оба его сервера имен не отвечают.
Сервер имен Y прерывает время ожидания и пытается A. Он получает правильный ответ, но клиент больше не ждет.
И нет хорошего решения. Чем дольше вы ждете ответа сервера имен, тем дольше вам нужно ждать, потому что сервер имен, которого вы ждете, ждет дольше. Возможно, проблема заключалась в том, что Y и Z не отказались от B достаточно быстро.
По сути, если какой-либо из ваших серверов имен не работает, некоторые клиенты из-за невезения могут выйти из строя, потому что они пробовали только плохие.
С другой стороны, если у вас есть два сервера имен и один из них выходит из строя, около 75% серверов имен получат ответ вместо 0%.