Dovecot/Replication: различия между версиями
(Новая страница: «{{Stub}} В данной статье мы рассмотрим настройку master/master репликации с использованием DSYNC. Реко...») |
м (переименовал Dovecot\Replication в Dovecot/Replication) |
(нет различий)
|
Текущая версия от 16:58, 2 мая 2017
В данной статье мы рассмотрим настройку master/master репликации с использованием DSYNC. Рекомендуется настроить реплики так, чтобы один и тот же пользователь обращался к одной и той же реплике, но никаких изменений не потеряется даже если пользователь одновременно будет изменять письма на обоих репликах, просто некоторые письма будут загружены заново. Репликация проходит асинхронно, поэтому большая задержка между репликами не является проблемой. Репликация основывается на индексных файлах Dovecot, поэтому письма не пропадут из-за ошибки файловой системы или из-за случайного удаления файлов, они просто реплицируются обратно. Репликация работает только между парами серверов.
Настройка
Убедитесь что у Вас правильно настроена база пользователей, это необходимо для получения списка пользователей для репликации:
# doveadm user '*' test@robust.local ...
Создадим файл /etc/dovecot/conf.d/10-replicator.conf в котором опишем все настройки репликации.
Включим модуль репликации глобально добавив:
mail_plugins = $mail_plugins notify replication
Процесс репликации должен запускаться при старте, чтобы сразу реплицировать пользователей:
service replicator { process_min_avail = 1 }
Далее вы должны указать как реплицировать. Например используя Doveadm:
dsync_remote_cmd = doveadm dsync-server -u%u
Почтовые процессы должны иметь доступ к именованному каналу (fifo) и сокету. Если вы используете единственный vmail UID, вы можете сделать так:
service aggregator { fifo_listener replication-notify-fifo { user = vmail } unix_listener replication-notify { user = vmail } }
Разрешим команды doveadm добавив:
service replicator { unix_listener replicator-doveadm { mode = 0600 } }
Также можно указать количество одновременно запущенных dsync процессов (по-умолчанию 10):
replication_max_conns = 10
Репликация происходит асинхронно. Вы можете дополнительно настроить время ожидания синхронизации новой почты. Это можно настроить так:
plugin { # Когда приходит новая почта, подождать пока она не синхронизируется с удаленной стороной, если этого не произошло в течении 2 секунд, вернуть успешный статус в любом случае replication_sync_timeout = 2s }
Настройка dsync поверх TCP
Создадим doveadm-server на нужном порту:
service doveadm { inet_listener { port = 12345 } }
И укажем doveadm клиенту использовать этот порт:
doveadm_port = 12345
Укажем пароль для соединения клиента и сервера:
doveadm_password = Pa$$word
Теперь вы можете использовать tcp:hostname в качестве цели dsync. Вы так же можете переопределить порт tcp:hostname:port:
plugin { mail_replica = tcp:192.168.135.236:4092 }
Статистику репликации пользователей можно посмотреть командой doveadm replicator status "шаблон имени":
# doveadm replicator status test* username priority fast sync full sync success sync failed test@robust.local none 02:11:01 18:32:00 02:11:01 -