Отказоустойчивость серверов клиентского доступа в Exchange 2013 (Client Access Server, CAS)

Отказоустойчивость серверов клиентского доступа в Exchange 2013 (Client Access Server, CAS)

Начиная с версии Exchange 2010, разработчики предоставили нам очень удобное решение по обеспечению отказоустойчивости и высокой доступности серверов баз данных почтовых ящиков (Mailbox Server).

С отказоустойчивостью серверов клиентского доступа Client Access Server (CAS) в Exchange 2010 все оказалось не так радужно. Приходилось создавать массивы CAS-серверов и NLB-кластеры (на базе Windows-решения или "железное" решение).

К счатью, в Exchange 2013 производитель перешел к абсолютно новому решению клиентского доступа. По сути, сейчас мы имеем "бывший" Outlook Anywhere, который работает как для клиентов снаружи сети, так и для внутренних пользователей. Запросы клиентов к серверу теперь обрабатываются независимо от подключения, т.е. абсолютно неважно, какой именно CAS-сервер отвечает клиенту, т.к. обработка всех запросов выполняется на серверах баз данных, а сервера клиентского доступа только отправляют\принимают данные.

Благодаря такому подходу, теперь не нужно использовать NLB-кластеры. Почтовый клиент самостоятельно определяет, к какому серверу подключаться.

Несмотря на то, что Microsoft рекомендует совмещать все роли на одном сервере, в нашей компании я стремлюсь к такому решению, как к более логичному и понятному для меня. Исходя из такой схемы я и попробую объяснить, каким образом очень просто и удобно реализовать высокую доступность CAS-серверов для Exchange 2013.

Отказоустойчивость серверов клиентского доступа в Exchange 2013 (Client Access Server, CAS)

Во внутрненней DNS-зоне создаем по две записи owa и autodiscover для каждого CAS-сервера (всего - 4). Время жизни записей в кэше - 5 минут. Получаем DNS Round Robin.

Далее надо настроить сервера, чтобы они отвечали по этим именам. В моей статье Внутренние/внешние URL виртуальных каталогов в Exchange 2010 с помощью Powershell есть список виртуальных каталогов, которые надо настроить. И еще - Outlook Anywhere.

Настройка Outlook Anywhere

Посмотрим на текущее состояние.

[PS] C:\Windows\system32>Get-ClientAccessServer ex-cas16-1 | Get-OutlookAnywhere | select identity,*hostname | fl


Identity         : EX-CAS16-1\Rpc (Default Web Site)
ExternalHostname : 
InternalHostname : ex-cas16-1.domain.local

[PS] C:\Windows\system32>Get-ClientAccessServer ex-cas16-2 | Get-OutlookAnywhere | select identity,*hostname | fl


Identity         : EX-CAS16-2\Rpc (Default Web Site)
ExternalHostname : 
InternalHostname : ex-cas16-2.domain.local

 

ExternalHostname - пустой, а InternalHostname указывает на внутреннее имя. Исправим это. 

[PS] C:\Windows\system32>Get-ClientAccessServer ex-cas16-1 | Get-OutlookAnywhere | Set-OutlookAnywhere -InternalHostname owa.mail-domain.com -ExternalHostname owa.mail-domain.com -InternalClientsRequireSsl $true -SSLOffloading $false -ExternalClientsRequireSsl $true -ExternalClientAuthenticationMethod Ntlm

[PS] C:\Windows\system32>Get-ClientAccessServer ex-cas16-2 | Get-OutlookAnywhere | Set-OutlookAnywhere -InternalHostname owa.mail-domain.com -ExternalHostname owa.mail-domain.com -InternalClientsRequireSsl $true -SSLOffloading $false -ExternalClientsRequireSsl $true -ExternalClientAuthenticationMethod Ntlm

 

Настройка виртуальных каталогов

$urlpath = "owa.mail-domain.com";
$servername = "ex-cas16-1"; # потом поменяйте имя сервера и еще раз запустите все команды
Get-ClientAccessServer -Identity $servername | Set-ClientAccessServer –AutodiscoverServiceInternalUri "$urlpath/autodiscover/autodiscover.xml"
Get-WebServicesVirtualDirectory -ADPropertiesOnly -Server $servername | Set-WebServicesVirtualDirectory -InternalUrl "$urlpath/ews/exchange.asmx" -ExternalUrl "$urlpath/ews/exchange.asmx"
Get-OabVirtualDirectory -ADPropertiesOnly -Server $servername | Set-OabVirtualDirectory -InternalUrl "$urlpath/oab" -ExternalUrl "$urlpath/oab"
Get-OwaVirtualDirectory -ADPropertiesOnly -Server $servername | Set-OwaVirtualDirectory -InternalUrl "$urlpath/owa" -ExternalUrl "$urlpath/owa"
Get-EcpVirtualDirectory -ADPropertiesOnly -Server $servername | Set-EcpVirtualDirectory -InternalUrl "$urlpath/ecp" -ExternalUrl "$urlpath/ecp"
Get-ActiveSyncVirtualDirectory -ADPropertiesOnly -Server $servername | Set-ActiveSyncVirtualDirectory -InternalUrl "$urlpath/Microsoft-Server-ActiveSync" -ExternalUrl "$urlpath/Microsoft-Server-ActiveSync"

 

Заключение

После наших действий надо подождать как минимум 15 минут для применения настроек (Outlook Anywhere). После этого можно проверять работу.

Проверка может заключаться в выключении одного из серверов CAS. При этом Outlook обычно переключается на другой сервер в течение 20 секунд, что очень быстро для работы электронной почты.

Использование DNS Round Robin в данном случае также обеспечивает распредение нагрузки между серверами.

 

exchange (ru), exchange 2013 (ru)

  • Просмотров: 9205
Добавить комментарий

Комментарии  
Cas server
Добрый день. Спасибо за статью.Возник вопрос по сертификатам, на всех серверах должен быть установлен один и тот же сертификат?
RE: Cas server
Цитирую Sharley:
Добрый день. Спасибо за статью.Возник вопрос по сертификатам, на всех серверах должен быть установлен один и тот же сертификат?


Здравствуйте, не обязательно.
2 CAS
Добрый день. Будет ли работать данная схема если на cas серверах разные версии CU?
RE: 2 CAS
Цитирую Yevgeniy:
Добрый день. Будет ли работать данная схема если на cas серверах разные версии CU?


Добрый, да, будет. Но я бы все-таки так не делал.

Related Articles