Доменные контролеры часто выполняют функцию и корпоративного DNS-сервера, что может привести к их повышенной нагрузке или даже перезагрузке ОС. Но эта роль важна, т.к. при авторизации в домене динамически заводятся A и PTR записи авторизованных в домене компьютеров и серверов. Для разгрузки AD DC от частых DNS запросов можно использовать кеширующий DNS-сервер (перед ним), но для того, чтобы сам кеш-DNS-сервер не стал точкой отказа, то их надо использовать 2, и для отслеживания их статуса, перед ними поставить UDP прокси-сервер. Проще это сделать на основе связки Nginx c keepalived. Keepalived кроме VRRP функционала должен также отслеживать статуc Nginx за счет постоянного выполнения скрипта (на основе "pidof nginx") или команды (killall -0 nginx) и тот и другой скрипт должны выдавать 0 в RC при наличии процесса.
Также на этих 2-х хостах необходимо установить по экземпляру DNS-cache "unbound" (или другой аналогичный) , который в свою очередь (но намного реже), обращается с DNS запросами к 2-м AD DC серверам.
В первой ноде Nginx (10.0.0.131) должны быть прописаны, как backend два кэш-сервера:
- 127.0.0.1:53 (экземпляр кеш-сервера на своей же машинке , что и UDP-proxy сервер)
- 10.0.0.132:53 (экземпляр кеш-сервера на другом участнике VRRP кластера)
на втором Nginx (10.0.0.132):
- 127.0.0.1:53 (экземпляр кеш-сервера на своей же машинке , что и UDP-proxy сервер)
- 10.0.0.131:53 (экземпляр кеш-сервера на другом участнике VRRP кластера)
VIP:10.0.0.130 (важно чтобы frontend слушал только VIP:53, т.к. настоящие IP:53 займет кеширующий сервер на этой машине)
Cкрипт (на основе "pidof"):