Назад | Перейти на главную страницу

Несколько записей MX или циклического перебора A

Что лучше и почему?

Есть 2 фильтра входящей почты, они находятся в кластере с одинаковыми характеристиками оборудования и могут обрабатывать одинаковую нагрузку. Это новая конфигурация, и я хотел бы знать, какой способ лучше справиться с балансировкой нагрузки с одинаковой стоимостью 2 серверов. Я могу настроить их на использование одного и того же имени хоста (ehlo) и одинаковых сертификатов, в настоящее время они используют сертификат, который включает все 3 имени, общее имя - mx.

В любом сценарии серверы будут повторять попытки обоих IP-адресов в случае выхода из строя одного из серверов.

Сценарий 1

example.com. IN MX 10 mx.example.com.
mx.example.com. IN A 10.0.0.10
mx.example.com. IN A 172.31.0.10

Сценарий 2

example.com. IN MX 10 mx1.example.com.
example.com. IN MX 10 mx2.example.com.
mx1.example.com. IN A 10.0.0.10
mx2.example.com. IN A 172.31.0.10

* Предположим, что все остальные переменные являются наилучшими (FCrDNS, SPF, ETC)

Google, кажется, делает ОБА.

;;Answer
gmail.com. 300 IN TXT "v=spf1 redirect=_spf.google.com"
gmail.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. (2015031901 21600 3600 1209600 300)
gmail.com. 345600 IN NS ns1.google.com.
gmail.com. 345600 IN NS ns2.google.com.
gmail.com. 345600 IN NS ns3.google.com.
gmail.com. 345600 IN NS ns4.google.com.
gmail.com. 3600 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 40 alt4.gmail-smtp-in.l.google.com.
gmail.com. 3600 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 300 IN AAAA 2607:f8b0:4006:80c:0:0:0:1015
gmail.com. 300 IN A 173.194.123.85
gmail.com. 300 IN A 173.194.123.86
gmail-smtp-in.l.google.com. 300 IN AAAA 2607:f8b0:400c:c00:0:0:0:1a
gmail-smtp-in.l.google.com. 300 IN A 74.125.134.26
gmail-smtp-in.l.google.com. 300 IN A 74.125.134.27

Наиболее предпочтительным решением для равномерного распределения нагрузки является использование фактический балансировщик нагрузки. В противном случае вы зависите от прихоти того, насколько плохо какой-либо конкретный MTA реализовал RFC.

В идеальном мире подойдет любое из упомянутых вами решений, однако в реальном мире вы, вероятно, в лучшем случае увидите постоянное разделение нагрузки 60/40. Это связано с тем, что даже несмотря на то, что RFC электронной почты и DNS могут содержать множество устрашающих ДОЛЖНО и ДОЛЖНО относиться к рандомизации во время выбора хоста, факт остается фактом: программисты ленивы, и у сервера нет способа отклонить соединения из-за ленивого выбора хоста.

Вы увидите две ситуации:

  1. Трафик попадает в любую первую запись.
  2. Трафик попадает в любую первую запись после сортировки доступных записей.

Лучший баланс, который мне удалось достичь, - это назначить самые высокие IP-адреса самым низким MX. В вашем случае это будет означать:

example.com. IN MX 10 mx1.example.com.
example.com. IN MX 10 mx2.example.com.
mx1.example.com. IN A 172.31.0.10
mx2.example.com. IN A 10.0.0.10

Это должно помочь сбалансировать ситуацию, поскольку PWM [Poorly Written MTA] # 1 предпочтет наименьшее имя записи MX, а PWM # 2 предпочтет наименьший IP-адрес MX.

Но, как я уже сказал, вы никогда не увидите истинного баланса.

Источник: Я администрировал MX-кластер с 10 узлами, обслуживающий более 10 000 доменов. [И тот, у которого самый низкий IP-адрес, по-прежнему получает 30% общего трафика, и мы просто сделали его более мощным :I]

Оба будут работать для вас одинаково. В обоих случаях вы настраиваете настройку с балансировкой нагрузки DNS, что позволяет использовать оба перечисленных сервера для ответа на запросы SMTP. Даже если посмотреть на количество запросов, в обоих случаях у вас будет два DNS-запроса (один для записи MX, другой для записи A), поэтому разницы в производительности быть не должно.

Для простоты я бы придерживался первого сценария, поскольку мне нужно было бы отслеживать только одну запись MX (на одну DNS-запись меньше ... не имеет большого значения, но, по крайней мере, на одну движущуюся часть меньше).

Как Google использует это, так это использование как гибкости балансировки нагрузки DNS, так и резервных возможностей взвешенных записей MX, которые являются единственной частью, которой вам не нужно пользоваться (по крайней мере, в соответствии с вашими сценариями).

Итак, если вы заметили, что их основная запись MX с весом 5 - это запись с несколькими записями A. Поэтому, когда все работает правильно, они распределяют этот трафик по этим адресам. Но если эти адреса не отвечают, приоритеты MX могут упасть, чтобы попробовать следующую запись по строке, и так далее, и так далее.

Большинство небольших настроек (небольших по сравнению с gmail, yahoo и т. Д.), Которые я видел, не балансируют нагрузку (по крайней мере, с балансировкой нагрузки DNS), а вместо этого используют взвешенный MX, чтобы попасть в список предпочтительных обработчиков SMTP. На самом деле все сводится к настройке, которая обеспечивает необходимую гибкость.