LINUX.ORG.RU
ФорумAdmin

Архитектура почты

 , , ,


3

3

Доброго времени суток, камрады.

Есть почтовый сервер: exim, dovecot, clamav, spamassasin. Пользователи на внешней машине LDAP.

Дата-центр, за последний год, два раза имел проблемы с интернетом по 15-30 минут, да и сервер работает уже 4й год, хочется подстраховаться и сделать так чтобы почта работала на 2 физических серверах в разных дата-центрах.

И я так и не смог нагуглить пример который бы мне понравился, поэтому пошел сюда. Что делают для отказоустойчивости почты?

Я нашел такие примеры: 1) Ставится mail proxy, на него ведет mx запись, он раздает почту двум mail серверам с MDA и MTA. Теоретически эти два сервера могут находиться в разных дата-центрах, и в случае отказа одного из них, proxy направит трафик на другой, как smtp трафик, так и imap трафик, так делают. Остается единая точка отказа - mail proxy. Можно ли сделать 2 mail proxy, на них 2 mx записи с разным приоритетом, и оба proxy будут слать на 2 mail сервера? Опять же, mx записи сработают для smtp, а как быть сотрудникам которые подключаются с почтовых клиентов по доменному имени к proxy? Использовать dns failover, типа как у dnsmadeeasy?

2) Делается кластер, внутри кластера диск DRBD или другой файловой системы которая будет реплицировать данные. В каждой ноде кластера mail сервер в разных дата-центрах, на них идет 2 mx записи. Когда один основной mail сервер сдыхает - включается резервный, информация там таже самая что и на основном сервере, smtp по приоритету mx записи попадает куда нужно, для сотрудников опять нужно переключение через dns failover?

3) Ставится два почтовых сервера, как у меня, exim, dovecot, clamav, spamassasin. Пользователи на внешней машине LDAP. Все как во 2 варианте, но для репликации использовать внутренние возможности приложения, dovecot-sync и dns-failover для imap сотрудников.

Может как-то комбинировать? Может я не вижу чего-то простого и явного? Особо буду благодарен на ссылки где в комплексе описывается создание «Mail Failover Service».

Ну в принципе ты и сам перечислил основные способы. Я бы делал по второму варианту, через drbd.

Сверху ставится что-то типа heartbeat/pacemaker. Если теряется связь между серверами, на первом всё гасится, на втором делается primary для ресурса drbd, запускаются сервисы, перебивается dns mail (CNAME) -> mail2 (A). При восстановлении - всё в обратном порядке.

anonymous
()

По вариантам #1 и #3 не понятно, как будет реализовываться отказоустойчивость для очереди сообщений, точнее для сообщений, находящихся непосредственно в очереди на обработку в момент отказа.
По варианту #1 вопрос синхронизации ящиков остаётся открытым.
По варианту #3 есть подозрения, что с Doveadm-Sync может повести себя неадекватно при отказе в момент её выполнения, и не факт, что это будет рационально по ресурсам.
Таким образом, как и анон выше, я склоняюсь к варианту #2.

ArcFi
()

ИМХО Для чего существует MX приоритеты ?

C:\>nslookup -type=mx wikipedia.org ns2.wikimedia.org
 Server:  ns2.wikimedia.org
 Address:  91.198.174.4
 
 wikipedia.org   MX preference = 50, mail exchanger = lists.wikimedia.org
 wikipedia.org   MX preference = 10, mail exchanger = mchenry.wikimedia.org
 lists.wikimedia.org     internet address = 91.198.174.5
 mchenry.wikimedia.org   internet address = 208.80.152.186

sova ★★
()

смени аватарку, а то сильно траурно

anonymous
()

Вангую, будет как в поговорке: Не было у бабы печали, купила баба порося!

Дата-центр, за последний год, два раза имел проблемы с интернетом по 15-30 минут, да и сервер работает уже 4й год, хочется подстраховаться и сделать так чтобы почта работала на 2 физических серверах в разных дата-центрах.

Это не проблемы! Любой обычный почтовик отработает эти полчаса по умолчанию и ни одно письмо не потеряется, если это почтовик, а не скрипт от спамеров конечно. И какая разница сколько лет серверу, если поднимается почта на другом за считаные минуты пробрось порты до нужного резервного почтовика и всего делов то если вдруг умер сервер.

Поддерживаю sova

ИМХО Для чего существует MX приоритеты ?

Но даже с этим решением геморой Вам и вашим клиентам обеспечен! Работаем с одной Бальшой и уважающей себя конторой в которой креативные сисадмины подумали над тем же, над чем задумались и Вы ( да я тоже когда то задумывался чего греха таить). Проблем с их почтовиками было масса, с разными приоритетами у них было несколько серваков. Ох и намучался я своим пользователям обьяснять, почему это когда они отвечают на пришедшее им в течении получаса письмо им говорят, что нет такого пользователя и что это не я виноват. Как жеж нет если вот он мне написал 15 минут назад письмо и я отвечаю на него. Не знаю почему, но с синхронизацией по пользователям у них были проблемы. Смотрю по логам какой сервак прислал письмо и какой сказал что нет такого пользователя, потом telnet ом начинаю пытать.... действительно ну нету такого пользователя на серваке с таким приоритетом. Не так давно они отказались от этой затеи и с тех пор проблем нет.

Ну нету инета полчаса или более нормальные почтовики будут стучаться не раз и не два доставят почту даже в течении нескольких суток (поправьте меня если я не прав)

alex_sim ★★★★
()
Последнее исправление: alex_sim (всего исправлений: 1)

Alex_sim, то есть Вы тоже за второй вариант? Иначе, если в сервере сдохнет два винта одновременно - почта встанет на несколько суток, пока там 3Тб почты накатится на новый сервер - это же не приемлемое решение, просто из бекапа восстанавливаться. Нужен сервер горячей замены. Дальше идем менять IP DNS для MX и все начинает работать.

Правда некоторые роутеры в компаниях имеют свой кеш DNS который не каждую неделю обновляют.

Кто-нибудь из присутствующих делал схему, если не с автоматическим восстановлением/поднятием сервера, то хотя бы со схемой горячей замены, где нужно ручками перенаправить? Расскажите опыт внедрения?

GreyDjin
() автор топика

Поговорив, почитав, пришел к мысли что разделять территориально почту слишком для меня сложно и не нужно. Проще отказаться от идеи резервировать работу дата-центра и резервировать только сервер который в этом дата-центре. Поставить второй сервер в ту же стойку, настроить drbd между ними и перегнать виртуальную машину с почтой на drbd диск.

GreyDjin
() автор топика
Ответ на: комментарий от GreyDjin

тут тоже могут быть нюансы, хранить образы на drbd дело с нюансами

сделай raid1 и регулярный backup

anonymous
()
Ответ на: комментарий от anonymous

drbd - это вобщем-то и есть raid1 по сети. А 3Тб у тебя из бэкапа будет доставаться от 6 до 12 часов, грубо говоря - один рабочий день. И, да, одно другого не заменяет.

anonymous
()

Ну когда я таким морочался, я разделил почту н 2 задачи - 1. Получение/отправка почты и 2. Отдача почты пользователю. Первая задача решалась добавлением backup MX, который позволял почте приходить и вставать в очередь (были упорыши, которые слали только на первый MX даже если он сдох и слали отлуп, но таких еденицы), когда главный сервер поднимался, вся почта приходила. Вторая задача решалась репликацией почтовых ящиков. Тут было просто - round-robin pool в DNS, 4 одинаковых сервера (с точки зрения почты). Там был всегда одинаковый набор юзеров.

Репликация пользователей была сначала решена репликацией файла virtusertable, потом sasldb, а потом просто парой домен-контроллеров AD. Проблем с юзерами не наблюдалось. Думаю просто с LDAP было бы не хуже.

Просто нарежь задачу на части и решай каждую отдельно.

slapin ★★★★★
()
Ответ на: комментарий от slapin

Кстати с data-center и прочее, заведи просто виртуалку в другом DC, и заведи на ней backup MX, а все остальные сервера запили на своём DC - если накроет канал надолго, почта не пропадёт, ну посидят юзеры без почты какое-то время. Если это критично, лучше ещё дополнительно дублировать почтовые ящики наружу. У меня такой задачи не стояло, так как конторская почта была, и сервера для imap торчали только внутри, наружу был только webmail.

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.