Ошибка кластера: Имени сети SQL не удалось зарегистрировать DNS
Архитектура кластерных объектов (CNO/VCO) и суть проблемы DNS
Ошибка «Ресурсу сетевого имени кластера не удалось зарегистрировать записи ресурсов DNS» (Event ID 1196, 1579 от Microsoft-Windows-FailoverClustering) возникает, когда виртуальный компьютерный объект (VCO), представляющий, например, роль SQL Server Always On или File Server, не имеет прав на обновление своей записи (A-record) в зоне DNS, настроенной на безопасные динамические обновления. Отказоустойчивый кластер Windows (WSFC) использует объект имени кластера (CNO) для аутентификации в AD и создания VCO. Бизнес-риски: после Failover (переезда роли на другой узел) IP-адрес сервиса меняется, но DNS-запись не обновляется. Клиенты продолжают стучаться на старый IP-адрес узла, что приводит к полной недоступности баз данных SQL или файловых шар.
Симптоматика сбоя
| Журнал событий | Описание проблемы | Следствие для сети |
|---|---|---|
| Event ID 1196 | Cluster network name resource failed registration of one or more associated DNS name(s). | DNS хранит неверный (устаревший) IP-адрес после отработки отказа (Failover). |
| Event ID 1579 | Cluster network name resource failed to update the DNS record. Access Denied. | CNO/VCO нет прав на изменение A-записи в зоне AD Integrated DNS. |
| Event ID 1207 | Cluster computer account could not be created/updated in Active Directory. | У CNO нет прав на создание объектов в OU. (Требуется Create Computer Objects). |
Алгоритм восстановления динамических обновлений DNS в кластере
Сценарий 1: Выдача прав CNO на DNS-запись (Access Denied)
Если DNS-зона принимает только безопасные обновления (Secure only), записью владеет тот, кто ее создал. Если запись создал админ вручную, кластер не сможет ее изменить.
- Откройте оснастку DNS Manager (
dnsmgmt.msc) на контроллере домена. - Найдите A-запись имени вашего кластера или SQL Listener (например, sql-listener.domain.local).
- Нажмите ПКМ -> Свойства -> вкладка Безопасность (Security). (Если вкладки нет, включите Advanced Features в меню View).
- Добавьте учетную запись кластера (CNO - Cluster Name Object, имя самого кластера с
$на конце) и выдайте ей права Полный доступ (Full Control). - Если это роль внутри кластера (VCO), добавьте CNO кластера, так как VCO обновляет записи от имени CNO.
Сценарий 2: Перерегистрация имени из Failover Cluster Manager
После выдачи прав необходимо принудительно обновить запись.
PowerShell (Запуск на любом узле кластера)
Update-ClusterNetworkNameResource -Name "Сетевое_имя_роли_SQL"
Или через GUI:
В Failover Cluster Manager -> Роли -> Выбрать роль -> Ресурсы -> ПКМ на ресурсе 'Сетевое имя' -> Дополнительные действия (More Actions) -> Восстановить (Repair).Сценарий 3: Проверка Primary DNS Suffix
DNS не зарегистрируется, если на сетевых адаптерах узлов не прописан правильный суффикс.
- В свойствах IPv4 адаптера heartbeat/корпоративной сети: Дополнительно -> вкладка DNS -> 'Суффикс DNS для данного подключения'.
- Убедитесь, что галочка Зарегистрировать адреса этого подключения в DNS установлена для публичных (клиентских) сетей и снята для Heartbeat/iSCSI сетей.
Типовые ошибки администраторов
- Удаление DNS записи вручную: Админы часто удаляют A-запись в надежде, что кластер создаст ее заново. Но если у CNO нет прав на создание записей в корне зоны, запись вообще не появится. Всегда выдавайте права (Allow ACLs) на саму зону.
- Разные DNS серверы на узлах: Если Нода 1 смотрит на DC1, а Нода 2 на DC2, и репликация AD между ними задерживается, Failover может вызвать ложные ошибки (Event 1196), так как Нода 2 не видит свежих изменений CNO.
Ошибки кворума и маршрутизации (Split-Brain) ведут к коррупции транзакций. Сертифицированные DBA ITSTM проведут аудит архитектуры WSFC, настроят File Share Witness, корректные тайм-ауты TTL в DNS и гарантируют RTO < 30 секунд.
Частые вопросы (FAQ)
Почему кластер пытается зарегистрировать DNS, если IP-адрес статический?
Кластер должен убедиться, что A-запись указывает именно на тот узел (и его MAC-адрес/интерфейс), который сейчас владеет ресурсом (Online). Это основа механизма Client Access Point.
Что такое CNO и VCO в терминологии кластера?
CNO (Cluster Name Object) — это учетная запись компьютера в AD, создаваемая при первичном создании кластера (например, CLUSTER01$). VCO (Virtual Computer Object) — это записи для конкретных ролей (например, SQL_LISTENER$), которыми управляет CNO.
Можно ли снять галочку 'Register this connection in DNS' для кластера?
В свойствах ресурса 'Сетевое имя' в FCM вы можете отключить регистрацию (RegisterAllProvidersIP = 0). Но для сетей Heartbeat и Storage (iSCSI/CSV) регистрация в DNS должна быть жестко отключена на уровне сетевых адаптеров ОС.
Как понизить TTL для DNS записи кластера?
По умолчанию TTL равен 1200 секунд (20 минут). В свойствах ресурса сетевого имени кластера через PowerShell (Get-ClusterResource 'Name' | Set-ClusterParameter HostRecordTTL 300) можно снизить это значение, чтобы кэш на клиентах очищался быстрее.