LINUX.ORG.RU
ФорумAdmin

Высокая доступность imap/pop3 сервиса

 , ,


1

4

Собственно намечается переделка почтовой системы. Никак не могу определиться с конечной архитектурой для новой. Входные данные -около 1000 пользователей 25-30к писем в сутки. Но надо рассчитывать что пользователей в одночасье может стать в полтора два раза больше. Типовой размер ящика - 5гб. Для отдельных августейших особ квота может быть увеличена до 25гб. Так же есть SLA - предельное время простоя почтового сервиса - 2 часа. Мои мысли на счет всего этого. Я сразу рассматриваю варианты с дупликацией сервисов. По железкам у меня есть около 20 гб оперативки под все виртуальные машины. до 12 ядер по 2.4 ггц и около 1тб места (не считая бекапов на отдельный хост) на интеловском PERC H730 железном raid 6 из 8 дисков.

С smtp все относительно просто. Там на уровне mx все отлично можно развести на несколько серверов. Почта никуда не пропадет. База пользователей тоже не сложно кластеризуется. А вот как сделать чтобы пользователи всегда могли эту почту забрать...

Теперь уже к непосредственным реализациям.

Сначала смотрел в сторону dovecot с общим хранилищем на nfs. Можно мониторить жив(доступен ли) ли сервер с dovecot и в случае чего перемещать виртуальный ip на простаивающего клона- соседа. nfs шару реплицировать rsync'ом по крону. Так же читал про вариант с dovecot director но тут единая точка отказа dovecot director так что это не для нас. Вторым вариантом был dbmail. Хранение почты в базе в принципе мне очень даже нравится. Как минимум потому что меньше сервисов- меньше чинить в случае чего. Так же не забываем про нативные средства репликации баз. Тут схема высокооступного imap/pop3 сервера выглядит так же - 2 сервера с dbmail конектятся к виртуальному ip кластера с sql базой, но только отпадают все костыли с rsync и nfs. И я остановился бы именно на этом решении если бы не куча но. 1) Dovecot я активно эксплуатирую а вот dbmail разве что переодически приходилось поглядывать как это у других. 2) В случае проблем с базой ложится весь сервис сразу. тогда как в случае повреждения файлов ( незначительного масштаба) потеряется лишь часть писем а серсис в целом продолжает работать. 3) Мне видятся явные проблемы с масштабируемостью. Все хорошо пока база с письмами относительно мелкая. С моим количеством пользователей она за полгода легко может превратится в полтерабайтного монстра и это не предел. Будет ли это еще летать или уже едва шевелиться - совершенно не ясно.


«можно развести на несколько серверов»
А вот как сделать чтобы пользователи всегда могли эту почту забрать...
«можно развести на несколько серверов»

anonymous
()

единая точка отказа dovecot director

Почему? Можно запустить несколько директоров и заставить их общаться друг с другом.

post-factum ★★★★★
()

25-30 писем на ящик в сутки, квота 5Гб. Что-то мне подсказывает, что лимит будет достигнут раньше чем хотелось бы, хотя конечно все зависит от характера переписки.
Еще момент на который стоит обратить внимание, dovecot создает хардлинки для писем на несколько адресатов, что существенно экономит место, а вот как с этим у dbmail не известно.

anc ★★★★★
()
Ответ на: комментарий от post-factum

Спасибо! перечитал внимательно dovecot wiki про директоров. буду пробовать

Остается конечно другая проблема этой схемы - если умирает не директор, а бекенд сервер на котором фактически хранится почта, то директор продолжит распределять пользователей на этот умерший бекенд. Дальше в статье есть как вручную исключить из ротации этот бекенд сервер так что придется допиливать руками скрипты чтобы автоматизировать этот процесс. Но это уже что-то на мой взгляд вполне предсказуемое.

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

тогда как в случае повреждения файлов ( незначительного масштаба) потеряется лишь часть писем а серсис в целом продолжает работать.

Очень сильно зависит от того чьи именно это письма были :) Может оказаться что и вазелин не понадобиться :)

В случае проблем с базой ложится весь сервис сразу.

Если она реплицируется на соседний сервак как раз тут проблем нет, поднимает его и продолжаем работать. Проблемы с базой понятие растяжимое, все зависит от индусов можно и накосячить.
Но вот сама идея использовать фактически для хранения блоба субд имхо не самая лучшая затея, профита никакого, оверхэд прилагается.

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

Очень плохой совет. Есть еще cyrus-imapd у него и репликация есть и murder (front-back) . Еще раз подчеркиваю, совет плохой если вы с ним не работали, т.к. документации по нему мало.

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

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

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

Если она реплицируется на соседний сервак как раз тут проблем нет, поднимает его и продолжаем работать. Проблемы с базой понятие растяжимое, все зависит от индусов можно и накосячить. Но вот сама идея использовать фактически для хранения блоба субд имхо не самая лучшая затея, профита никакого, оверхэд прилагается.

В принципе база + репликация это относительно надежное решение и главное все делается штатными средствами. Проблемы вы правы могут быть разными. Так же в перспективе непредсказуемый рост потребления ресурсов этого решения и сподвиг меня на обсуждение проблемы.

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

Даже среди знакомых нет таких кто этим баловался

Из местных (кроме меня) знаю что AS использует, остальных не запомнил, но их мало.
Вещь реально годная, но ее надо уметь готовить, т.е. постепенный подход, с вашими запросами (с нуля) потратите кучу времени, что явно не нужно.

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

Так же в перспективе непредсказуемый рост потребления ресурсов

Не совсем так, оверхэд будет даже в самом начале по определению, просто он не так заметен.

anc ★★★★★
()

Может яндекс все таки? Я серьёзно. Лучше заняться чем-нибудь полезным, чем кластер под почту.

zloelamo ★★★★
()

nfs шару реплицировать rsync'ом по крону

ты серьезно после этого написал что боишься что sql-база будет тормозить когда у тебя пол терабайта писем накопится?

ei-grad ★★★★★
()

В случае проблем с базой ложится весь сервис сразу. тогда как в случае повреждения файлов ( незначительного масштаба) потеряется лишь часть писем а серсис в целом продолжает работать.

Хранилище грохнется - то же самое. Но ты его попробуй отреплицировать. А базу - легко. Можно даже отложенную реплику держать, чтобы если «всё пропало» то можно было восстановиться без простоя на восстановление из бэкапа. Но бэкапы (инкрементальные) тоже никто не отменял.

ei-grad ★★★★★
()

Имхо, NFS будет жутко тормозить, т.к. специфика IMAP - много мелких файлов. Я сталкивался. Грубо, прочитать по nfs tar-ом каталог 200Мб, 2к файлов занимало 2 сек, тогда как локально 0.5 сек.

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

Не в случае dovecot. Там нормально сделано. man mdbox

zloelamo ★★★★
()

nfs шару реплицировать rsync'ом по крону.

Есть dsync специально для этого.

Так же читал про вариант с dovecot director но тут единая точка отказа dovecot director так что это не для нас.

Также можно исползовать nginx для проксирования imap

Вторым вариантом был dbmail.

Мы пробовали, но человек который её испытывал, отказался внедрять. Сказал, что багов много (он лично правил несколько в апстриме, но сдался). Огромный плюс у этой штуки наличие дедупликации (только у них она есть). Обслуживать и реплицировать базу, на самом деле легче, чем файловое хранилище.

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

ну может стоит использовать отдельный инструмент ввиде vrrp, corosync? vrrp может определять кто живой кто умер и производить соответствующие действия.

Nurmukh ★★★
()

А вот как сделать чтобы пользователи всегда могли эту почту забрать...

imap - dos roundrobin под одним именем несколько хостов

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