Product SiteDocumentation Site

6.5.2. Восстановление произвольного контроллера домена после фатального сбоя

Служба каталогов использует единую распределенную базу данных, которая хранит сведения обо всех сетевых ресурсах домена. Каждый контроллер домена работает с локальной копией этой базы данных. Синхронизацию изменений между такими локальными копиями обеспечивает механизм репликации. При выполнении на существующем контроллере домена команды samba-tool domain join DC локальная копия базы данных полностью перезаписывается актуальной копией распределенной базы данных (происходит процесс «повторного ввода» контроллера в домен).
Возможны ситуации, когда в работе отдельного контроллера домена возникают неполадки или он полностью выходит из строя, при этом остальная часть домена продолжает функционировать корректно. Например, это может быть вызвано ошибками в нереплицируемой части локальной копии базы данных на контроллере или некорректной репликацией изменений с других контроллеров. То есть ошибки не распространяются по домену через механизм репликации и носят локальный характер.
Алгоритм восстановления контроллера домена под тем же именем, если в результате каких либо технических проблем он пришел в неработоспособное состояние:
  1. Вывести контроллер домена из эксплуатации, путём удаления всей информации о нём. Для этого на любом работающем контроллере домена выполнить команду:
    # samba-tool domain demote --remove-other-dead-server=dc2 -UAdministrator
    
    где dc2 — имя (hostname) не функционирующего контроллера домена.
  2. На узле, который будет заменой вышедшего из строя контроллера домена, выполнить следующие действия:
    • в файле /etc/krb5.conf указать опции default_realm = TEST.ALT и dns_lookup_realm = false;
    • остановить все зависимые службы:
      # for service in samba smb nmb krb5kdc slapd bind; do systemctl disable $service; systemctl stop $service; done
      
    • очистить всю конфигурацию Samba:
      # rm -f /etc/samba/smb.conf
      # rm -rf /var/lib/samba
      # rm -rf /var/cache/samba
      # mkdir -p /var/lib/samba/sysvol
      
    • ввести узел в домен как дополнительный контроллер домена:
      # samba-tool domain join test.alt DC --dns-backend=SAMBA_INTERNAL -Uadministrator --realm=test.alt
      
    • запустить samba и обновить dns:
      # systemctl enable --now samba
      # samba_dnsupdate --use-samba-tool --verbose
      

Важно

На других контроллерах домена в выводе команды samba-tool drs showrepl некоторое время будет присутствовать сообщение WERR_GEN_FAILURE в секции неисправного КД:
…
DC=DomainDnsZones,DC=test,DC=alt
  Default-First-Site-Name\DC2 via RPC
    DSA object GUID: b78f2c9d-5c62-4497-a5e1-4fc85aedf1cb
    Last attempt @ Wed Apr 24 07:51:24 2024 MSK failed, result 31 (WERR_GEN_FAILURE)
    28 consecutive failure(s).
    Last success @ NTTIME(0)

DC=ForestDnsZones,DC=test,DC=alt
  Default-First-Site-Name\DC2 via RPC
    DSA object GUID: b78f2c9d-5c62-4497-a5e1-4fc85aedf1cb
    Last attempt @ Wed Apr 24 07:51:24 2024 MSK failed, result 31 (WERR_GEN_FAILURE)
    28 consecutive failure(s).
    Last success @ NTTIME(0)
…
Это нормально, и через некоторое время после полной репликации оно исчезнет. Репликация может занять до нескольких часов.