Product SiteDocumentation Site

3.3.2. Настройка двунаправленной репликации SysVol на базе Rsync/osync

Исходные данные:
  • все команды выполняются от пользователя root;
  • первый контроллер домена — DC1;
  • второй контроллер домена — DC2 (уже присоединён к домену);
  • sysvol расположен в /var/lib/samba/ как на DC1, так и на DC2;
  • rsync расположен в /usr/bin/rsync;
  • osync расположен в /usr/bin/osync;
  • журнал sysvolsync пишется в файл /var/log/osync_*.log;
  • настроено беспарольное взаимодействие между rootами всех контроллеров домена (см. Настройка беспарольного доступа по ssh).
На первом контроллере домена (DC1):
  1. Установить пакеты rsync и osync:
    # apt-get install rsync osync
    
  2. Отредактировать файл /etc/osync/sync.conf:
    #!/usr/bin/env bash
    INSTANCE_ID="sync_sysvol"
     # Путь до SysVol на текущем сервере
    INITIATOR_SYNC_DIR="/var/lib/samba/sysvol"
     # Путь до SysVol на удалённом сервере
    TARGET_SYNC_DIR="ssh://root@DC2:22//var/lib/samba/sysvol"
     # ssh ключ root
    SSH_RSA_PRIVATE_KEY="/root/.ssh/id_ed25519"
     # Удалённые хосты которые osync пингует перед стартом
    REMOTE_3RD_PARTY_HOSTS=""
     # Сохранять xattr
    PRESERVE_ACL=yes
     # Сохранять xattr
    PRESERVE_XATTR=yes
     # Сохранять резервную копию удалённых файлов
    SOFT_DELETE=yes
    DESTINATION_MAILS="your@test.alt"
    REMOTE_RUN_AFTER_CMD="/usr/bin/samba-tool ntacl sysvolreset"
    
На втором контроллере домена (DC2) установить пакет rsync:
# apt-get install rsync

Важно

Перед запуском команды синхронизации рекомендуется сделать резервную копию каталога sysvol.
Запустить команду синхронизации:
# /usr/bin/osync.sh /etc/osync/sync.conf --dry --verbose
Если команда выполнилась без ошибок, можно удалить параметр --dry и запустить команду синхронизации снова:
# /usr/bin/osync.sh /etc/osync/sync.conf --verbose
В результате sysvol будет синхронизирован на обоих серверах.

Примечание

Если в файле sysvol параметры SOFT_DELETE (сохранять резервные копии удалённых файлов) и CONFLICT_BACKUP (сохранять резервные копии файлов на целевой реплике, если они обновлены из исходной реплики) установлены в значение yes, то на источнике и получателе репликации необходимо создать каталоги .osync_workdir/deleted и .osync_workdir/backup:
# mkdir /var/lib/samba/sysvol/.osync_workdir/deleted
# mkdir /var/lib/samba/sysvol/.osync_workdir/backup
На DC1 включить синхронизацию по расписанию:
# crontab -e
*/5 * * * * root  /usr/bin/osync.sh /etc/osync/sync.conf --silent
Если при попытке синхронизировать каталог возникают проблемы необходимо:
  • отключить синхронизацию по расписанию на DC1;
  • убедиться, что rsync и osync не выполняются в данный момент (можно проверить, выполнив команду ps -aux| grep sync);
  • удалить хеш-файлы .osync_workdir на DC1 и DC2 в /var/lib/samba/sysvol/;
  • проверить sysvol и повторить синхронизацию;
  • убедиться, что синхронизация выполнена успешно;
  • включить синхронизацию по расписанию на DC1.
Если контроллеров домена больше чем два, можно создать больше заданий для cron на DC1:
  1. Скопировать файл /etc/osync/sync.conf в другой файл, например: /etc/osync/sync_dc3.conf.
  2. В файле /etc/osync/sync_dc3.conf изменить значение параметра TARGET_SYNC_DIR.
  3. Повторить шаги 1 и 2 для всех контроллеров домена.
  4. Изменить задание на синхронизацию по расписанию на DC1:
    # crontab -e
    */5 * * * * root  /usr/bin/osync.sh /etc/osync/sync.conf --silent
    */5 * * * * root  /usr/bin/osync.sh /etc/osync/sync_dc3.conf --silent
    …