У нас есть два почтовых сервера («dubone» и «dubdeuce»), один выполняет всю работу, а другой бездействует. Мы хотим иметь настройку, при которой, если dubone занят или не работает, dubdeuce может принимать / отклонять / фильтровать электронные письма так же, как dubone.
Затем, когда dubone снова станет доступен, dubdeuce отправит все электронные письма, которые он хранит, на dubone, чтобы все электронные письма были в одном месте.
Мы используем Exim4 и Dovecot, поддерживаемые MySQL и доступные через RoundCube. Обе машины работают под управлением Ubuntu Linux.
Как я могу синхронизировать базы данных между обеими машинами, чтобы dubdeuce всегда был актуальным (что необходимо для правильного выполнения своей работы), а затем как я могу проинструктировать dubdeuce отправить все свои накопленные сообщения на dubone?
У вас есть три компонента: репликация базы данных, избыточность почты и доступ пользователей.
Репликация базы данных проста и хорошо покрывается Документация MySQL.
Репликация почты обычно так же проста, как и проверка правильности настройки записей MX. Если dubdeuce не является основным MX, он будет перенаправлять почту на основной MX, когда основной снова станет доступен.
Однако вы явно не заявили об этом, но ваше включение roundcube подразумевает, что вы хотите, чтобы вторая система была полностью работоспособной в отношении MUA - вы хотите, чтобы пользователи могли читать электронную почту. Если это не так - вы счастливы, что roundcube отключен до тех пор, пока dubone не вернется - тогда вышеуказанные компоненты сделают эту работу за вас.
Еще раз: если все, что вам нужно, это простая система, которая будет хранить и пересылать электронную почту до тех пор, пока не вернется первичный, все, что вам нужно, это репликация базы данных для mysql и использование вторичного MX. Эта система должна работать постоянно, а не запускаться по мере необходимости.
Если вам нужна полностью избыточная система, в которой roundcube всегда доступен, то вам нужен общий почтовый пул между двумя системами. Нет реального способа настроить dubduece в качестве основного MX и дать пользователям возможность читать почту с него и разумно пересылать электронную почту на dubone.
Итак, вам нужен общий почтовый ящик. Это может быть третья система, действующая как файловый сервер, обслуживающая почтовый пул на двух основных хостах, однако есть давняя рекомендация не использовать NFS для почтового пула из-за проблем с блокировкой.
Это можно сделать, используя DRBD между двумя узлами в активном / резервном режиме - когда один узел выходит из строя, вы используете сердцебиение чтобы переключить другой узел в активный. Когда первый узел снова подключится к сети, вам понадобится процесс подтверждения, чтобы все снова переключить. Вам все равно нужно будет продумать, как вы реплицируете свою базу данных - теперь вам может потребоваться установка с несколькими мастерами.
Наконец, вы можете сделать то же самое с DRBD, но использовать на нем файловую систему с поддержкой кластера и обеспечить постоянную активность обоих узлов. Однако это немного сложнее. Вы также можете DRBD всей почтовой системы между узлами. И есть множество способов масштабирования - более продвинутые решения включают SAN и стек виртуальных машин, например Citrix Xenserver или VMware.
За свои деньги я бы придерживался активного / пассивного почтового пула DRBD, либо mysql с несколькими мастерами, либо mysql с активной / пассивной поддержкой DRBD, и использовал пульс для включения активных служб при аварийном переключении. Альтернативой этому является размещение всего вашего почтового сервера в виртуальной машине с использованием Xen или KVM или чего угодно, резервное копирование виртуальной машины в систему DRBD, а также резервное переключение DRBD и запуск виртуальной машины на втором узле в случае сбоя. . В этом примере у вас фактически есть только «один» почтовый сервер, он просто перемещается между вашими узлами. Обратной стороной является то, что вам придется подождать, пока он загрузится при отработке отказа, что может занять некоторое время.
В качестве побочного примечания, каким бы способом вы ни действовали, убедитесь, что сканирование спама, вирусов, вредоносных программ и т. Д. Настроено одинаково в обеих системах.