Страница 1 из 1

Exim балансировка нагрузки.

Добавлено: 2011-05-09 17:33:31
mailo
Всем доброе время суток!
подошел к вопросу построения почтовой системы,а именно с балансировкой ввходящей и исходящей нагрузки.
то есть что хочется учидить в результате, Exim балансер , за нима стоят несоклько mta на которые совственно он и должен балансировать нагрузку. в связи с этим я не нашел такой функции у exim , посоветуйте если ли у него такие плишли и если нет то в какую сторону идти или может быть уйти в сторону postfix ?
совственно и изходящий потом то же самое баланчер и несколько сервером за ним....
Спасибо! :sorry:

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 19:46:00
blade_007
Чем балансировка с помощью днс не устраивает?

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 21:09:54
mailo
то есть просто прописать два mx c разным приоритетом? и где же там балансировка? если просто прописать 2 mx с разным приоритетом , учитывая это если пойдет большая нагрузка, то сначало нагнет первый по приоритету а потом второй, так как все письма изначально будут ломиться на первый в приоритете, и елси он не бобо то уже на второй. да и что касатеся исходящей балансировки?

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 21:37:12
blade_007

Код: Выделить всё

domain.ru. IN MX 10 mx1.domain.ru.
domain.ru. IN MX 10 mx2.domain.ru.

mx1.domain.ru. IN A 1.1.1.1
mx2.domain.ru. IN A 2.2.2.2 
или

Код: Выделить всё

domain.ru. IN MX 10 mxs.domain.ru.
domain.ru. IN MX 20 mxb.domain.ru.

mxs.domain.ru. IN A 1.1.1.1
mxs.domain.ru. IN A 2.2.2.2 
mxb.domain.ru. IN A 31.31.31.31
mxb.domain.ru. IN A 32.32.32.32

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 21:50:10
mailo
http://ru.wikipedia.org/wiki/%D0%97%D0% ... 1%D1%8C_MX

Чтобы отправить электронную почту на определённый адрес, сервер-отправитель делает DNS-запрос, запрашивая MX-запись домена получателя электронного сообщения (то есть части адреса после символа «@»). В результате запроса возвращается список имён хостов почтовых серверов, принимающих входящую почту для данного домена, а также величину приоритета для каждого из хостов. Сервер-отправитель затем пытается установить SMTP-соединение с одним из этих хостов, начиная с того, у кого значение величины приоритета наименьшее, перебирая каждый из них, пока не удастся установить соединение хотя бы с одним из них. Если же имеется несколько хостов с одинаковыми приоритетами, то должны быть предприняты попытки установить соединение с каждым из них.

то есть каждое приходящее письмо будет долбиться на все сервера с одинаковым приоритетом! Если я правильно понял.
для себя пока нашел 2 более менее варианта, это HAproxy и nginx как балансеры.
ДНС изначально не балансер и не может выполнять такой функции. Если бы mail.ru например делало так , давно бы встало раком.
mailo@mailo-HP:~$ host -t mx mail.ru
mail.ru mail is handled by 10 mxs.mail.ru.
ваш вариант подходит скажем бля того что бы было 2 сервера mx один страховал первый, если вдруг он загнется но почту примет второй, но никак не балансировка нагрузки. ИМХО... если я не прав поправьте

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 22:03:43
blade_007

Код: Выделить всё

host -t mx yandex.ru
yandex.ru mail is handled by 10 mx.yandex.ru.
host mx.yandex.ru
mx.yandex.ru has address 77.88.21.89
mx.yandex.ru has address 87.250.250.89
mx.yandex.ru has address 93.158.134.89
mx.yandex.ru has address 213.180.204.89
Клиент постучится на первый из X адресов, которые получил от днс-сервера. (Днс-сервер отдает обычно round-robin, балансируя нагрузку. Можно дополнительно уменьшить TTL для A записей. ) Mx-сервер примет письмо, в случае проблем клиент постучится на второй сервер., а не будет 'долбиться на все сервера с одинаковым приоритетом'. Ничего лишнего.

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 22:09:31
mailo
blade_007 писал(а):

Код: Выделить всё

host -t mx yandex.ru
yandex.ru mail is handled by 10 mx.yandex.ru.
host mx.yandex.ru
mx.yandex.ru has address 77.88.21.89
mx.yandex.ru has address 87.250.250.89
mx.yandex.ru has address 93.158.134.89
mx.yandex.ru has address 213.180.204.89
Клиент постучится на первый из X адресов, которые получил от днс-сервера. (Днс-сервер отдает обычно round-robin, балансируя нагрузку. Можно дополнительно уменьшить TTL для A записей. ) Mx-сервер примет письмо, в случае проблем клиент постучится на второй сервер., а не будет 'долбиться на все сервера с одинаковым приоритетом'. Ничего лишнего.

больше чем уверен это скорее всего балансеры yandex, а не реальные mx ;-)
рауд робин это костыль а не балансер, потом записи dns кешируются в вторичных, локальных, кеширующий и тд dns серверах! а это значит что в этом случае рауд робин не сможет работать корректно, потом если упал mx или несколько, как вы быстро выведите из нагрузки эти mx ? будите ждать пока все днс сервера не обновят запись из корневого днс сервера? ну вот никак меня пока не может это убедить.... опять же если ошибаюсь поправьте

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 22:14:19
blade_007
Я не зря упомянул про TTL. Кроме того, я не собираюсь вас убеждать - я лишь высказал свое мнение.
"Больше, чем уверен" и "скорее всего" - две большие разницы.

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 22:24:32
mailo
ну хорошо, делаем TTL 1h , 1 час будут долбиться в нерабочи сервера, потом насколько увеличивается нагрузка на ДНС ?
я не прошу меня убедить, я в поиске нормального продакшин решения. пока мы обсуждаем только один вариант. Думаю было бы не плохо подключить
и еще несколько вариантов например HAproxy и Nginx. потом еще один минус DNS, это к примеру, клиенты что у тебя буду тпрописывать, на выбор smtp1-10 кому какой нравится? и где тогда тут будет балансировка? при настройке почтового ящика прописали у себя скажем mx3 ... он сдох... сразу маты в саппорт.. и сапоорт бежит перенастраивать клиенту на другой mx.....

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 22:37:45
blade_007
См. еще раз пример яндекса. Прописывать клиенту надо адрес разрешаюшийся в 2,3,... адресов.
TTL можно поставить меньше часа, например, 15 минут.
Использовать Haproxy и nginx-smtp-proxy можно, тогда у вас будет единая точка отказа (если не указаны дополнительные mx с меньшим приоритетом), если нужно будет перегрузить балансировщик.

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-09 22:47:00
mailo
думаю что это всетаки балансеры, а не MX. ТТL в 15 мин сильно увеличит нагрузку на DNS.
далее failover исключается, тем что балансер будет в кластере так называемом, с 2 мя нодами скажем, и если умирает один второй берет на себя его роль, так что это мелочи. а вот в этом же случает, если у одной записи 10 адресов, ну получил клиент адрес с мертвым мх стукнулся туда.... и...
ну вот если у вас есть опят nginx тапример , расскажите как оно готовится и работает

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-10 19:50:22
blade_007
> сильно увеличит нагрузку на DNS
для распределения нагрузки ДНС тоже кластер поставьте.

> балансер будет в кластере так называемом, с 2 мя нодам
Хотите кластер? Никто не против.
Встроенных стредств кластеризации у exim нет, как впрочем и у postfix.
Насчет балансировки нагрузки средствами nginx-smtp-proxy недавно интересовались http://forum.lissyara.su/viewtopic.php?f=20&t=32572, но сами понимаете... Что касается haproxy - он заточен для работы с http-бэкэндами (и здесь весьма неплох, в настройке прост, стабилен).
Задачу лучше чётче сформулировать, потом бить на части. Вообщем, делайте, спрашивайте, может в конце напишите статейку.

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-12 9:23:29
mailo
еще один минус ДНС, в то что балансировка может быть не равномерной из за кеширования, если скажем отправитель делает рассылку, получил от днс первым ип одного МТА и начнет на него хреначить 2) е то что пидоры могут например срать в один МТА, и тут ДНС как балансер никак не спасет.

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-12 9:38:17
blade_007
1. уже понятно, что вы плохо думаете о балансировке с помощью днс. Не знаю связано ли это с религиозными взглядами или на основе большого опыта эксплуатирования.
2. для этого можно сделать ограничения как на уровне firewall, так и на уровне mail-сервера

Re: Exim балансировка нагрузки.

Добавлено: 2011-05-12 9:44:16
mailo
да я рассматривал такой вариант ограничение сессий через iptables, если это делать на уровне MTA но письма будут получать 421 код ошибки (временная ошибка ) и будут возвращаться к отправителю в очередь. если же это делать через iptables то удаленный MTA , будет думать что мой MTA недоступен и пытаться лукнуться на следующий по приоритету МТА, но опять же это не есть балансировка. а тема как помним была создана по созданию системы с балансировкой.