24.14. Синхронизация с другим сервером tinydns

Проблема

Имеется второй сервер tinydns, используемый в качестве резервного. Как обеспечить его синхронизацию с основным сервером tinydns для актуализации DNS-записей?

Решение

Для решения задачи синхронизации обычно используется механизм rsync через ssh, который позволяет копировать данные между серверами, сохраняя актуальность записей. В следующем примере описан сценарий, который копирует файл DNS data на резервный сервер и выполняет для него команду make:

rsync -e ssh -az /etc/tinydns/root/data $backup-host:/etc/tinydns/root/data
ssh $backup-host "cd /etc/tinydns/root; make"

Замените $backup-host именем или IP-адресом удалённого сервера. Для автоматизации процесса можно добавить соответствующие строки в Makefile основного сервера. Это позволит синхронизировать данные автоматически при каждом обновлении основного сервера:

data.cdb: data
    /usr/local/bin/tinydns-data
    rsync -e ssh -az /etc/tinydns/root/data $backup-host:/etc/tinydns/root/data
    ssh $backup-host "cd /etc/tinydns/root; make"

Автоматизация синхронизации с помощью cron

Для регулярной синхронизации серверов tinydns можно использовать планировщик задач cron, добавив в crontab основного сервера соответствующую команду. Например, настройка на обновление данных раз в час будет выглядеть так:

0 * * * * rsync -e ssh -az /etc/tinydns/root/data $backup-host:/etc/tinydns/root/data && ssh $backup-host "cd /etc/tinydns/root; make"

Эта строка запускает команду каждый час, обеспечивая актуальность данных на резервном сервере tinydns. cron позволяет гибко настроить частоту выполнения синхронизации в зависимости от потребностей инфраструктуры.

Защита синхронизации с помощью SSH-ключей

Чтобы автоматизировать процесс без необходимости вводить пароль каждый раз, настройте аутентификацию с использованием SSH-ключей. Создайте пару ключей на основном сервере и добавьте открытый ключ на резервный сервер, используя команду:

ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub $backup-host

После этого rsync и ssh смогут выполнять операции без запроса пароля, что особенно удобно для автоматизации.

Дополнительные рекомендации по настройке DNS-инфраструктуры

Резервный сервер tinydns можно настроить как вторичный сервер DNS. В случае недоступности основного сервера резервный сервер продолжит обслуживать DNS-запросы, обеспечивая надёжность системы. Для этого зарегистрируйте резервный сервер в регистрирующей организации наряду с основным, чтобы оба сервера были доступны для клиентов (см. раздел 24.6).

Советы по оптимизации процесса синхронизации и безопасности

См. также

Глава 16; глава 17.