none
Отказоустойчивость пограничных серверов Edge RRS feed

  • Вопрос

  • Добрый день!

    Столкнулся с проблемой, не отрабатывает отказоустойчивость из двух пограничных серверов.

    Если выключить первый edge сервер, то очередь во внешку начнет копить на него и даже не пытаться отправлять через второй edge.

    Описание инфраструктуры:
    2 MBX сервера Exchange 2010 c DAG на windows server 2008R2
    2 HUB сервера Exchange 2010 с NLB для единого входа SMTP
    2 CAS сервера Exchange 2010 с NLB
    2 EDG  сервера Exchange 2013 у каждого свой MX cost отправки одинаковый на обоих =100

    Можно ли заставить балансировать EDG не используя никакие Ip балансировщики или хотя бы заставить резервировать друг-друга при отправке почты?


    23 июня 2015 г. 10:12

Ответы

  • Как вариант, попробуйте уменьшить время для resubmit письма (параметр MaxIdleTimeBeforeResubmit в конфигурационном файле EdgeTransport.exe.config) на MBX серверах.

    Message retry, resubmit, and expiration intervals

    Automatic message resubmission

    Undelivered messages are automatically resubmitted if the delivery queue is in the status of Retry and has been unable to successfully deliver any messages for a specified period of time. That period of time is controlled by the MaxIdleTimeBeforeResubmit key in the EdgeTransport.exe.config application configuration file. Only messages in delivery queues are candidates for automatic resubmission.

    To specify a value, enter it as a time span: dd.hh:mm:ss where d = days, h = hours, m = minutes, and s = seconds.

    The default value is 12:00:00 or 12 hours.


    Blog - Smtp25.ru
    Полезные ссылки - Links

    24 июня 2015 г. 8:27
    Отвечающий

Все ответы

  • Проверьте, чтобы у вас был только один SendConnector, который вы используете для отправки через EDGE. Далее в нем укажите в "SmartHosts" оба IP пограничных серверов. 
    • Предложено в качестве ответа ЮА 2 июля 2015 г. 11:46
    23 июня 2015 г. 10:56
  • У меня две разных MX запис, разные IP и и каждый сенд-коннектор имеет свою настройку FQDN

    (Укажите полное доменное имя, которое этот соединитель будет предоставлять в ответ на запрос HELO или EHLO.)

    И он совпадает с PTR записью в DNS.

    Если я сделаю на одном сенд-коннекторе, то есть вероятность, что при отправке через второй EDGE PTR запись не совпадет и нас побреет антиспам при тесте реверс dns.

    23 июня 2015 г. 11:31
  • Укажите для этих IP одну и ту же PTR.

    • Предложено в качестве ответа ЮА 2 июля 2015 г. 11:46
    23 июня 2015 г. 13:03
  • Как вариант, попробуйте уменьшить время для resubmit письма (параметр MaxIdleTimeBeforeResubmit в конфигурационном файле EdgeTransport.exe.config) на MBX серверах.

    Message retry, resubmit, and expiration intervals

    Automatic message resubmission

    Undelivered messages are automatically resubmitted if the delivery queue is in the status of Retry and has been unable to successfully deliver any messages for a specified period of time. That period of time is controlled by the MaxIdleTimeBeforeResubmit key in the EdgeTransport.exe.config application configuration file. Only messages in delivery queues are candidates for automatic resubmission.

    To specify a value, enter it as a time span: dd.hh:mm:ss where d = days, h = hours, m = minutes, and s = seconds.

    The default value is 12:00:00 or 12 hours.


    Blog - Smtp25.ru
    Полезные ссылки - Links

    24 июня 2015 г. 8:27
    Отвечающий
  •  <add key="MaxIdleTimeBeforeResubmit" value="12:00:00" />

    Спасибо, авария показала что 7 часов уже достаточно чтобы получить по шапке. :)

  • Укажите для этих IP одну и ту же PTR.

    если в одном коннекторе отправки указать два edge сервера, то настроив в нем HELO mx1.domain.ru, получим, что оба EDGE будут так представляться при отправке почты.

    И однажды, второй сервер EDGE mx2.domain.ru представившись mx1.domain.ru, пройдет тест на PTR запись, но будет побрит тестом HELO, например.

    Имхо, это неправильно менять PTR.

  • "Хорошая практика" по балансировке нагрузки EDGE в моем ответе. Попробуйте сделать именно так. Все будет работать хорошо и шапка останется целее :)

    https://technet.microsoft.com/en-us/library/aa997438(v=exchg.150).aspx

    If more than one Edge Transport server is subscribed to the same Active Directory site, no additional Send connectors to the Internet are created. Instead, all Edge Subscriptions are added to the same Send connector as the source server. This load balances outbound connections to the Internet across the subscribed Edge Transport servers.

  • У меня такая же конфигурация как и у вас . Два эджа настроеные на разные каналы и разные коннекторы на отправку + один на прием( в нем прописаны оба эджа) . Со своими PTR. Я у себя использую скрипт проверки доступности внешнего IP ( запускаю с основного сервера Exchange). Если основной канал падает. Эксчендж отрубает первый коннектор, и почта уходит через второй. Скрипт работает с проверкой каждые 5 минут. Уже несколько раз спасало.

    Скрипт ниже, может поможет в решении вашей проблемы:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch-srv-01/PowerShell/ -Authentication Kerberos
    Import-PSSession $Session
    
    $StatusConnector = Get-SendConnector "EdgeSync - EXCH-EDGE-01 to INTERNET"
    
    
    # Создаем объект webclient для выполнения http запроса
    $WebClient = New-Object system.net.webclient
    # Загружаем ответ на запрос в переменную $result
    $result = $WebClient.DownloadString("http://internet.yandex.ru/")
    # Выцепляем из результата IP-адрес с помощью регулярного выражения. 
    
    if ($result -match "(?s)([0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3})")
    {
        # Помещаем полученный IP в переменную $ip
        $ip = $matches[1]
        #Помещаем в переменную базовый IP для сравнения
        $BasicIP = "00.00.00.00"
        # Если новый IP не совпадает с базовым IP и коннектор отключен, то коннектор уже отключен и канал еще не восстановлен
        if ($BasicIP -ne $ip -and $StatusConnector.Enabled -eq $false) { 
        
            Write-Host "Интернет канал не восстановлен"
    
            }
         
        #Если новый IP не совпадает с базовым IP и коннектор включен, то основного канала нет и отключаем коннектор
            
                    elseif($BasicIP -ne $ip -and $StatusConnector.Enabled -eq $True){
    
                #отключаем коннектор
    
            Set-SendConnector "EdgeSync - EXCH-EDGE-01 to INTERNET" -Enabled $false
    
            # Отправляем сообщение
            #Формирование сообщения
    $FromAddress = "support@domain.ru"
    $ToAddress = "a.medvedovsky@domain.ru"
    $MessageSubject = "Изменение в транспорте Exchange"
    $MessageBody = "Транспорт по умолчанию изменен на резервный EXCH-EDGE-02."
    $SendingServer = "Exch-srv-01.domain.ru"
    
            # Создаем почтовое сообщение
                $SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
            
     
            # Отсылаем сообщение
                $SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
                $SMTPClient.Send($SMTPMessage) }
    
    
                               
         #Если новый IP совпадает с базовым IP и коннектор не включен, то основной канал работает и включаем коннектор                                                                                                                            
    
                                elseif($BasicIP -eq $ip -and $StatusConnector.Enabled -ne $true) {
        
           
             Set-SendConnector "EdgeSync - EXCH-EDGE-01 to INTERNET" -Enabled $True -Verbose
            
             # Отправляем сообщение
            #Формирование сообщения
    $FromAddress = "support@domain.ru"
    $ToAddress = "a.medvedovsky@domain.ru"
    $MessageSubject = "Изменение в транспорте Exchange"
    $MessageBody = "Основной транспорт восстановлен EXCH-EDGE-01 ."
    $SendingServer = "Exch-srv-01.domain.ru"
    
            # Создаем почтовое сообщение
                $SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
            
     
            # Отсылаем сообщение
                $SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
                $SMTPClient.Send($SMTPMessage)}
            
            
            
            
                                                                else {write-host "Все ок"}
            
             
             }
    
              
        
                 
    
        
            
            


    Если вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку Предложить как ответ или Проголосовать за полезное сообщение

  • указал 15 минут на всех серверах HUB транспорта и ресстартовал сервис транспорта.

        <add key="MaxIdleTimeBeforeResubmit" value="00:15:00" />

    перенаправил почту на гугул SMTP:*.gmail.com:10 почту через 2й EDGE

    на первом идже SMTP:*:10 продолжил отправлять остальную почту.

    Потушил EDG2, за 30 минут ожидания скопилась очередь до gmail.com.

    Попыток отправить все через первый EDGE не предпринимает

  • Алексей, спасибо за скрипт, пригодится.
  • Алексей, а если EDGE сервер падает так, что внешний IP у него работает, но почту он не отправляет и соответственно, копится очередь на всех HUB-ах.

    У меня, например, после перевода EDGE сервера на связку: WindowsServer2012R2+Exchange2013CU8+ORF5.X +DKIM

    EDGE начинает залипать.

    и в логах никаких ошибок не нашли.

  • Виталий добрый день!

    такая конфигурация PTR это абсолютно нормальная ситуация:

    IP1 = name1

    IP2 - name1

    Вот такая ситуация не нормальная:

    IP1 = name1

    IP2 =name2

    Поищите в Интернете на эту тему ответу - их полно, вы не единственный. Поэтому, как мне кажется, вариант Artem R он более верный и вписывается в архитектуру которую предлагают на технете. 



    • Изменено ЮА 2 июля 2015 г. 9:44
  • Алексей, а если EDGE сервер падает так, что внешний IP у него работает, но почту он не отправляет и соответственно, копится очередь на всех HUB-ах.

    У меня, например, после перевода EDGE сервера на связку: WindowsServer2012R2+Exchange2013CU8+ORF5.X +DKIM

    EDGE начинает залипать.

    и в логах никаких ошибок не нашли.

    Скрипт рассчитан только на отказ канала.  Других проблем пока нет ) поэтому и нет других проверок.

    В вашем случае если вдруг перестает ходить почта на эджах, проверьте сколько осталось места на диске где копится очередь. И на практике: если у вас свободно даже 2Gb это не означает что эксченджу это понравится. У него свои счетчики. Поэтому следите за свободным местом.  


    Если вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку Предложить как ответ или Проголосовать за полезное сообщение

    2 июля 2015 г. 10:05
  • Алексей, спасибо за ответ. про очередь на дисках я в курсе, эту проблему мы уже проходили.

    Мы откатили иджи на WIndowsServer2008R2+Exchange2010+ORF+DKIM, залипание EDGE пропало.

    Но мы все равно хотим организовать отказоустойчивость из 2х EDGE серверов.


    2 июля 2015 г. 10:30
  • нужна будет помощь - обращайтесь! medvedovskyab@outlook.com

    Если вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку Предложить как ответ или Проголосовать за полезное сообщение

    2 июля 2015 г. 12:02