Развертывание Microsoft Exchange

В сценарии описывается развертывание серверов Microsoft Exchange в Яндекс.Облаке. Инсталляция Microsoft Exchange будет состоять из двух почтовых серверов, двух серверов Active Directory и двух серверов Edge Transport в зонах доступности ru-central1-a и ru-central1-b. Нагрузка будет распределяться по серверам с помощью сетевого балансировщика нагрузки. Управление всеми серверами будет осуществляться через отдельную ВМ с доступом в интернет в зоне доступности ru-central1-c.

  1. Подготовьтесь к развертыванию:
    1. Подготовьте облако к работе
    2. Создайте облачную сеть и подсети
    3. Создайте скрипт для управления локальной учетной записью администратора
  2. Установите и настройте Active Directory на ВМ:
    1. Создайте ВМ для Active Directory
    2. Создайте ВМ для File Share Witness
    3. Установите и настройте Active Directory
    4. Настройте второй контроллер домена
  3. Установите и настройте Microsoft Exchange:
    1. Установите Microsoft Exchange
    2. Создайте сервера Microsoft Exchange
    3. Создайте Database Availability Group
    4. Создайте диски для баз данных на виртуальных машинах
    5. Настройте Database Availability Group
    6. Настройте Client Access
  4. Настройте балансировщик нагрузки
  5. Настройте Accepted Domains и Email Address Policy
  6. Создайте и настройте ВМ для серверов Edge Transport
    1. Настройте серверы Edge Transport
    2. Настройте сервер Edge Transport в зоне ru-central1-a
    3. Настройте сервер Edge Transport в зоне ru-central1-b
    4. Добавьте серверы Edge Transport в Exchange
    5. Настройте подписку на сервере vm-edge-a
    6. Настройте подписку на сервере vm-edge-b
  7. Удалите созданные облачные ресурсы, если они больше не нужны

Подготовьте облако к работе

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

  1. Перейдите в консоль управления, затем войдите в Облако или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

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

Подробнее об облаках и каталогах.

В стоимость инсталляции Microsoft Exchange входят:

Создайте облачную сеть и подсети

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

  1. Создайте облачную сеть:

    Чтобы создать облачную сеть:

    1. Откройте раздел Virtual Private Cloud в каталоге, где требуется создать облачную сеть.
    2. Нажмите кнопку Создать сеть.
    3. Задайте имя сети: exchange-network.
    4. Нажмите кнопку Создать сеть.

    Чтобы создать облачную сеть, выполните команду:

    $ yc vpc network create --name exchange-network
    
  2. Создайте три подсети в сети exchange-network:

    Чтобы создать подсеть:

    1. Откройте раздел Virtual Private Cloud в каталоге, где требуется создать подсеть.
    2. Нажмите на имя облачной сети.
    3. Нажмите кнопку Добавить подсеть.
    4. Заполните форму: введите имя подсети exchange-subnet-a, выберите зону доступности ru-central1-a из выпадающего списка.
    5. Введите CIDR подсети: IP-адрес и маску подсети: 10.1.0.0/16. Подробнее про диапазоны IP-адресов в подсетях читайте в разделе Облачные сети и подсети.
    6. Нажмите кнопку Создать подсеть.

    Повторите шаги еще для двух подсетей exchange-subnet-b и exchange-subnet-c в зонах доступности ru-central1-b и ru-central1-c с CIDR 10.2.0.0/16 и 10.3.0.0/16 соответственно.

    Чтобы создать подсети, выполните команды:

    yc vpc subnet create \
      --name exchange-subnet-a \
      --zone ru-central1-a \
      --network-name exchange-network \
      --range 10.1.0.0/16
    
    yc vpc subnet create \
      --name exchange-subnet-b \
      --zone ru-central1-b \
      --network-name exchange-network \
      --range 10.2.0.0/16
    
    yc vpc subnet create \
      --name exchange-subnet-c \
      --zone ru-central1-c \
      --network-name exchange-network \
      --range 10.3.0.0/16
    

Создайте скрипт для управления локальной учетной записью администратора

Создайте файл setpass, содержащий скрипт, который будет устанавливать пароль для локальной учетной записи администратора при создании виртуальных машин через CLI:

#ps1
Get-LocalUser | Where-Object SID -like *-500 | Set-LocalUser -Password (ConvertTo-SecureString "<ваш пароль>" -AsPlainText -Force)

Пароль должен соответствовать требованиям к сложности.

Подробные рекомендации по защите Active Directory читайте на сайте разработчика.

Создайте ВМ для Active Directory

Создайте две виртуальных машины для Active Directory. Эти машины не будут иметь доступа в интернет.

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины: ad-vm-a.

  3. Выберите зону доступности ru-central1-a.

  4. В блоке Публичные образы нажмите кнопку Выбрать. В открывшемся окне выберите образ 2016 Datacenter.

  5. В блоке Диски укажите размер загрузочного диска 35 ГБ.

  6. В блоке Вычислительные ресурсы:

    • Выберите платформу: Intel Cascade Lake.
    • Укажите необходимое количество vCPU и объем RAM:
      • vCPU — 4.
      • Гарантированная доля vCPU — 100%.
      • RAM — 8 ГБ.
  7. В блоке Сетевые настройки нажмите кнопку Добавить сеть и выберите сеть exchange-network. Выберите подсеть exchange-subnet-a. В блоке Публичный адрес выберите вариант Без адреса.

  8. В блоке Доступ укажите данные для доступа на виртуальную машину:

    • В поле Пароль укажите ваш пароль.
  9. Нажмите кнопку Создать ВМ.

Повторите операцию для ВМ с именем ad-vm-b в зоне доступности ru-central1-a и подключите ее к подсети exchange-subnet-b

$ yc compute instance create \
    --name ad-vm-a \
    --hostname ad-vm-a \
    --memory 8 \
    --cores 4 \
    --zone ru-central1-a \
    --network-interface subnet-name=exchange-subnet-a,ipv4-address=10.1.0.3 \
    --create-boot-disk image-folder-id=standard-images,image-family=windows-2016-gvlk \
    --metadata-from-file user-data=setpass

$ yc compute instance create \
    --name ad-vm-b \
    --hostname ad-vm-b \
    --memory 8 \
    --cores 4 \
    --zone ru-central1-b \
    --network-interface subnet-name=exchange-subnet-b,ipv4-address=10.2.0.3 \
    --create-boot-disk image-folder-id=standard-images,image-family=windows-2016-gvlk \
    --metadata-from-file user-data=setpass

Создайте ВМ для File Share Witness

Для настройки машин с Active Directory будет использоваться файловый сервер с выходом в интернет.

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины: fsw-vm.

  3. Выберите зону доступности ru-central1-с.

  4. В блоке Публичные образы нажмите кнопку Выбрать. В открывшемся окне выберите образ 2016 Datacenter.

  5. В блоке Диски укажите размер загрузочного диска 35 ГБ.

  6. В блоке Вычислительные ресурсы:

    • Выберите платформу: Intel Cascade Lake.
    • Укажите необходимое количество vCPU и объем RAM:
      • vCPU — 2.
      • Гарантированная доля vCPU — 100%.
      • RAM — 4 ГБ.
  7. В блоке Сетевые настройки нажмите кнопку Добавить сеть и выберите сеть exchange-network. Выберите подсеть exchange-subnet-c. В блоке Публичный адрес выберите вариант Без адреса.

  8. В блоке Доступ укажите данные для доступа на виртуальную машину:

    • В поле Пароль укажите ваш пароль.
  9. Нажмите кнопку Создать ВМ.

$ yc compute instance create \
    --name fsw-vm \
    --hostname fsw-vm \
    --memory 4 \
    --cores 2 \
    --zone ru-central1-c \
    --network-interface subnet-name=exchange-subnet-c,nat-ip-version=ipv4 \
    --create-boot-disk image-folder-id=standard-images,image-family=windows-2016-gvlk \
    --metadata-from-file user-data=setpass

Установите и настройте Active Directory

У машин с Active Directory нет доступа в интернет, поэтому их следует настраивать через ВМ fsw-vm с помощью RDP.

  1. Подключитесь к ВМ fsw-vm с помощью RDP. Используйте логин Administrator и ваш пароль.

  2. На ВМ fsw-vm запустите RDP и подключитесь к виртуальной машине ad-vm-a. Используйте логин Administrator и ваш пароль.

  3. На ВМ ad-vm-a запустите PowerShell и задайте статический адрес:

    netsh interface ip set address "Ethernet 2" static 10.1.0.3 255.255.255.0 10.1.0.1
    
  4. Создайте временную папку:

    mkdir C:\Windows\temp
    
  5. Установите роли Active Directory:

    Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
    
    Success Restart Needed Exit Code      Feature Result
    ------- -------------- ---------      --------------
    True    No             Success        {Active Directory Domain Services, Group P...
    
  6. Создайте лес Active Directory:

    Install-ADDSForest -DomainName 'yantoso.net' -Force:$true
    

    Windows перезапустится автоматически. Снова подключитесь к ВМ ad-vm-a. Используйте логин yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  7. Переименуйте сайт по умолчанию в ru-central1-a:

    Get-ADReplicationSite 'Default-First-Site-Name' | Rename-ADObject -NewName 'ru-central1-a'
    
  8. Создайте еще два сайта для других зон доступности:

    New-ADReplicationSite 'ru-central1-b'
    New-ADReplicationSite 'ru-central1-c'
    
  9. Создайте подсети и привяжите их к сайтам:

    New-ADReplicationSubnet -Name '10.1.0.0/16' -Site 'ru-central1-a'
    New-ADReplicationSubnet -Name '10.2.0.0/16' -Site 'ru-central1-b'
    New-ADReplicationSubnet -Name '10.3.0.0/16' -Site 'ru-central1-c'
    
  10. Переименуйте сайт-линк и настройте репликацию:

    Get-ADReplicationSiteLink 'DEFAULTIPSITELINK' | `
        Set-ADReplicationSiteLink -SitesIncluded @{Add='ru-central1-b'} -ReplicationFrequencyInMinutes 15 -PassThru | `
        Set-ADObject -Replace @{options = $($_.options -bor 1)} -PassThru | `
        Rename-ADObject -NewName 'ru-central1'
    
  11. Укажите сервер переадресации DNS:

    Set-DnsServerForwarder '10.1.0.2'
    
  12. Настройте DNS-клиент:

    Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses "10.2.0.3,127.0.0.1"
    

Настройте второй контроллер домена

  1. Подключитесь к ВМ fsw-vm с помощью RDP. Используйте логин Administrator и ваш пароль.

  2. На ВМ fsw-vm запустите RDP и подключитесь к виртуальной машине ad-vm-b. Используйте логин Administrator и ваш пароль.

  3. Создайте временную папку:

    mkdir C:\Windows\temp
    
  4. Установите роли Active Directory:

    Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
    
    Success Restart Needed Exit Code      Feature Result
    ------- -------------- ---------      --------------
    True    No             Success        {Active Directory Domain Services, Group P...
    
  5. Настройте DNS-клиент:

    Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses "10.1.0.3,127.0.0.1"
    
  6. Настройте статический IP-адрес:

    netsh interface ip set address "Ethernet 2" static 10.2.0.3 255.255.255.0 10.2.0.1
    
  7. Добавьте контроллер в домен:

    Install-ADDSDomainController `
        -Credential (Get-Credential "yantoso\Administrator") `
        -DomainName 'yantoso.net' `
        -Force:$true
    

    Windows перезапустится автоматически. Снова подключитесь к ВМ ad-vm-b. Используйте логин yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  8. Укажите сервер переадресации DNS:

    Set-DnsServerForwarder '10.2.0.2'
    

Установите Microsoft Exchange

  1. Подключитесь с помощью RDP к ВМ fsw-vm и запустите PowerShell.

  2. Настройте DNS-клиент:

    Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses "10.1.0.3,10.2.0.3"
    
  3. Добавьте сервер в домен:

    $Credentials = Get-Credential # yantoso\Administrator
    Add-Computer -DomainName yantoso.net -DomainCredential $Credentials -Force -Restart
    

    Windows перезапустится автоматически. Снова подключитесь к ВМ fsw-vm. Используйте логин yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  4. Создайте папку distrib:

    mkdir c:\distrib
    
  5. Загрузите дистрибутив Exchange Server и необходимые зависимости:

    1. .NET Framework 4.7.1.
    2. Visual C++ Redistributable Package for Visual Studio 2012. Переименуйте скачанный файл в vcredist_x64_2012.exe.
    3. Visual C++ Redistributable Package for Visual Studio 2013. Переименуйте скачанный файл в vcredist_x64_2013.exe.
    4. Microsoft Unified Communications Managed API 4.0, Core Runtime 64-bit.

    Поместите дистрибутивы в директорию C:\distrib.

  6. Предоставьте общей доступ из домена к папке с дистрибутивами:

    New-SmbShare -ReadAccess 'yantoso\domain users' -Path 'c:\distrib' -Name 'distrib'
    

Создайте сервера Microsoft Exchange

Создайте первый сервер Exchange

  1. Создайте ВМ vm-exchange-a:

    1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

    2. В поле Имя введите имя виртуальной машины: vm-exchange-a.

    3. Выберите зону доступности ru-central1-a.

    4. В блоке Публичные образы нажмите кнопку Выбрать. В открывшемся окне выберите образ 2016 Datacenter.

    5. В блоке Диски укажите размер загрузочного диска 100 ГБ.

    6. Добавьте еще один SSD-диск размером 250 ГБ с именем db.

    7. В блоке Вычислительные ресурсы:

      • Выберите платформу: Intel Cascade Lake.
      • Укажите необходимое количество vCPU и объем RAM:
        • vCPU — 8.
        • Гарантированная доля vCPU — 100%.
        • RAM — 32 ГБ.
    8. В блоке Сетевые настройки нажмите кнопку Добавить сеть и выберите сеть exchange-network. Выберите подсеть exchange-subnet-a. В блоке Публичный адрес выберите вариант Без адреса.

    9. В блоке Доступ укажите данные для доступа на виртуальную машину:

      • В поле Пароль укажите ваш пароль.
    10. Нажмите кнопку Создать ВМ.

    yc compute instance create \
      --name vm-exchange-a \
      --hostname vm-exchange-a \
      --memory 32 \
      --cores 8 \
      --zone ru-central1-a \
      --network-interface subnet-name=exchange-subnet-a \
      --create-boot-disk size=100,image-folder-id=standard-images,image-family=windows-2016-gvlk \
      --create-disk type=network-nvme,size=250,auto-delete=false \
      --metadata-from-file user-data=setpass
    
  2. Подключитесь к ВМ fsw-vm с помощью RDP.

  3. На ВМ fsw-vm запустите RDP и подключитесь к ВМ vm-exchange-a с помощью RDP. Используйте логин Administrator и ваш пароль. Запустите PowerShell.

  4. Настройте DNS-клиент:

    Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses "10.1.0.3"
    
  5. Добавьте ВМ vm-exchange-a в домен:

    $Credentials = Get-Credential # yantoso\Administrator
    Add-Computer -DomainName yantoso.net -DomainCredential $Credentials -Force -Restart
    

    После перезагрузки зайдите на ВМ, используя учетную yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  6. Установите загруженные зависимости по порядку:

    1. & \\fsw-vm\distrib\vcredist_x64_2012.exe /install /passive /norestart
    2. & \\fsw-vm\distrib\vcredist_x64_2013.exe /install /passive /norestart
    3. & \\fsw-vm\distrib\UcmaRuntimeSetup.exe /install /passive /norestart
    4. & \\fsw-vm\distrib\NDP472-KB4054530-x86-x64-AllOS-ENU.exe /install /passive /norestart
  7. Перезапустите VM: Restart-Computer -Force.

    После перезагрузки зайдите на ВМ, используя учетную yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  8. Установите Exchange Mailbox Server на vm-exchange-a. Смонитруйте образ дистрибутива из общей папки с дистрибутивами:

    Mount-DiskImage \\fsw-vm\distrib\ExchangeServer2016-x64-cu13.iso
    
  9. Запустите установку Exchange Mailbox Server:

    & D:\Setup.exe /Mode:Install /InstallWindowsComponents /Role:Mailbox /IAcceptExchangeServerLicenseTerms /OrganizationName:MyOrg
    Restart-Computer -Force
    

    После установки ВМ перезапустится автоматически.

Создайте второй сервер Exchange

  1. Создайте ВМ vm-exchange-b:

    1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

    2. В поле Имя введите имя виртуальной машины: vm-exchange-b.

    3. Выберите зону доступности ru-central1-b.

    4. В блоке Публичные образы нажмите кнопку Выбрать. В открывшемся окне выберите образ 2016 Datacenter.

    5. В блоке Диски укажите размер загрузочного диска 100 ГБ.

    6. Добавьте еще один SSD-диск размером 250 ГБ с именем db.

    7. В блоке Вычислительные ресурсы:

      • Выберите платформу: Intel Cascade Lake.
      • Укажите необходимое количество vCPU и объем RAM:
        • vCPU — 8.
        • Гарантированная доля vCPU — 100%.
        • RAM — 32 ГБ.
    8. В блоке Сетевые настройки нажмите кнопку Добавить сеть и выберите сеть exchange-network. Выберите подсеть exchange-subnet-b. В блоке Публичный адрес выберите вариант Без адреса.

    9. В блоке Доступ укажите данные для доступа на виртуальную машину:

      • В поле Пароль укажите ваш пароль.
    10. Нажмите кнопку Создать ВМ.

    yc compute instance create \
      --name vm-exchange-b \
      --hostname vm-exchange-b \
      --memory 32 \
      --cores 8 \
      --zone ru-central1-b \
      --network-interface subnet-name=exchange-subnet-b \
      --create-boot-disk size=100,image-folder-id=standard-images,image-family=windows-2016-gvlk \
      --create-disk type=network-nvme,size=250,auto-delete=false \
      --metadata-from-file user-data=setpass
    
  2. Подключитесь к ВМ fsw-vm с помощью RDP.

  3. На ВМ fsw-vm запустите RDP и подключитесь к ВМ vm-exchange-b с помощью RDP. Используйте логин Administrator и ваш пароль. Запустите PowerShell.

  4. Настройте DNS-клиент:

    Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses "10.1.0.3"
    
  5. Добавьте ВМ vm-exchange-a в домен:

    $Credentials = Get-Credential # yantoso\Administrator
    Add-Computer -DomainName yantoso.net -DomainCredential $Credentials -Force -Restart
    

    После перезагрузки зайдите на ВМ, используя учетную yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  6. Установите загруженные зависимости по порядку:

    1. & \\fsw-vm\distrib\vcredist_x64_2012.exe /install /passive /norestart
    2. & \\fsw-vm\distrib\vcredist_x64_2013.exe /install /passive /norestart
    3. & \\fsw-vm\distrib\UcmaRuntimeSetup.exe /install /passive /norestart
    4. & \\fsw-vm\distrib\NDP472-KB4054530-x86-x64-AllOS-ENU.exe /install /passive /norestart
  7. Перезапустите VM: Restart-Computer -Force.

    После перезагрузки зайдите на ВМ, используя учетную yantoso\Administrator и ваш пароль. Снова откройте PowerShell.

  8. Установите Exchange Mailbox Server на vm-exchange-b. Смонитруйте образ дистрибутива из общей папки с дистрибутивами:

    Mount-DiskImage \\fsw-vm\distrib\ExchangeServer2016-x64-cu13.iso
    
  9. Запустите установку Exchange Mailbox Server:

    & D:\Setup.exe /Mode:Install /InstallWindowsComponents /Role:Mailbox /IAcceptExchangeServerLicenseTerms /OrganizationName:MyOrg
    Restart-Computer -Force
    

    После установки ВМ перезапустится автоматически.

Создайте Database Availability Group

Database Availability Group обеспечивает отказоусточивасть почтовых серверов с помощью репликации баз данных и автоматического переключения баз при неполадках.

  1. Подключитесь к ВМ fsw-vm с помощью RDP.

  2. Дайте группе yantoso\Exchange Trusted Subsystem администраторские права на ВМ fsw-vm:

    Add-LocalGroupMember -Group 'Administrators' -Member 'yantoso\Exchange Trusted Subsystem'
    

Создайте диски для баз данных на виртуальных машинах

  1. На ВМ fsw-vm запустите RDP и подключитесь к ВМ vm-exchange-a с помощью RDP. Используйте логин yantoso\Administrator и ваш пароль.

  2. Создайте дополнительный диск и отформатируйте его:

    Get-Disk | `
        Where-Object PartitionStyle -eq raw | `
        Initialize-Disk -PartitionStyle GPT -PassThru | `
        New-Partition -DriveLetter 'Z' -UseMaximumSize | `
        Format-Volume -FileSystem NTFS -NewFileSystemLabel "mdb" -Confirm:$false -AllocationUnitSize 65536
    
  3. Установите роль Failover-Clustering:

    Install-WindowsFeature -Name 'Failover-Clustering' -IncludeManagementTools
    

Повторите команды для виртуальной машины vm-exchange-b.

Настройте Database Availability Group

  1. На ВМ fsw-vm запустите RDP и подключитесь к ВМ vm-exchange-a с помощью RDP. Используйте логин yantoso\Administrator и ваш пароль.

  2. Запустите Exchange Management Shell.

  3. Создайте Database Availability Group:

    New-DatabaseAvailabilityGroup `
        -Name ycdag `
        -WitnessServer fsw-vm `
        -DatabaseAvailabilityGroupIpAddresses 255.255.255.255
    
  4. Добавьте серверы vm-exchange-a и vm-exchange-b в DAG:

    Add-DatabaseAvailabilityGroupServer -Identity yadag -MailboxServer vm-exchange-a
    Add-DatabaseAvailabilityGroupServer -Identity yadag -MailboxServer vm-exchange-b
    
  5. Проверьте состояние серверов, оба сервера должны находиться в графе Operational Servers:

    Get-DatabaseAvailabilityGroup -Status
    
    Name             Member Servers                                      Operational Servers
    ----             --------------                                      -------------------
    ycdag            {VM-EXCHANGE-A, VM-EXCHANGE-B}                    {VM-EXCHANGE-A, VM-EXCHANGE-B}
    
  6. Создайте базу данных почтовых серверов:

    New-MailboxDatabase -Name yamdb -EdbFilePath 'Z:\MDB\yamdb\yamdb.edb' -LogFolderPath 'Z:\MDB\yamdb\log' -Server vm-exchange-a
    
  7. Смонтируйте базу данных:

    Mount-Database yamdb
    
  8. Создайте копию базы данных на втором сервере:

    Add-MailboxDatabaseCopy -Identity yamdb -MailboxServer vm-exchange-b -SeedingPostponed
    Update-MailboxDatabasecopy yamdb\vm-exchange-b –CatalogOnly
    
  9. Проверьте состояния баз данных:

    Get-MailboxDatabaseCopyStatus -Server vm-exchange-a
    Get-MailboxDatabaseCopyStatus -Server vm-exchange-b
    

Настройте Client Access

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

  1. Задайте почтовый домен:

    $MailDomain = "mail.yantoso.net"
    
  2. ECP:

    Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -ExternalUrl "https://$MailDomain/ecp"
    
  3. EWS:

    Get-WebServicesVirtualDirectory | Set-WebServicesVirtualDirectory -ExternalUrl "https://$MailDomain/ews/exchange.asmx"
    
  4. Active Sync:

    Get-ActiveSyncVirtualDirectory | Set-ActiveSyncVirtualDirectory -ExternalUrl "https://$MailDomain/Microsoft-Server-ActiveSync"
    
  5. OAB:

    Get-OabVirtualDirectory | Set-OabVirtualDirectory -ExternalUrl "https://$MailDomain/OAB"
    
  6. OWA:

    Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -ExternalUrl "https://$MailDomain/owa"
    
  7. PowerShell:

    Get-PowerShellVirtualDirectory | Set-PowerShellVirtualDirectory -ExternalUrl "https://$MailDomain/powershell"
    
  8. MAPI:

    Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -ExternalUrl "https://$MailDomain/mapi"
    

Настройте балансировщик нагрузки

Балансировщик будет распределять нагрузку по серверам Exchange в разных зонах доступности.

Чтобы создать сетевой балансировщик:

  1. Откройте раздел Load Balancer в каталоге, где требуется создать балансировщик.
  2. Нажмите кнопку Создать балансировщик.
  3. Задайте имя балансировщика: exchange-lb.
  4. В блоке Обработчики выберите автоматический публичный адрес и нажмите кнопку Добавить обработчик.
  5. Введите имя обработчика: yassl
  6. Укажите порт обработчика: 443 и нажмите кнопку Добавить.
  7. Нажмите переключатель Целевые группы.
  8. Введите имя целевой группы: exchange-tg.
  9. Отметьте виртуальные машины vm-exchange-a и vm-exchange-b.
  10. В блоке Проверка состояния введите имя проверки состояния: exchange-hc.
  11. Выберите тип проверки TCP.
  12. Укажите порт 443.
  13. Оставьте остальные параметры по умолчанию.
  14. Нажмите кнопку Создать балансировщик.
  1. Создайте балансировщик:

    $ yc lb nlb create --name exchange-lb
    
  2. Создайте целевую группу:

    $ yc lb tg create --name exchange-tg
    
  3. Получите сведения о почтовых серверах:

    $ yc compute instance get vm-exchange-a
    $ yc compute instance get vm-exchange-b
    

    Скопируйте IP-адреса и идентификаторы подсетей ВМ.

  4. Добавьте серверы в целевую группу:

    $ yc lb tg update --name exchange-tg \
        --target address=10.2.0.4,subnet-id=e2lkh054nic9h3nckbrs \
        --target address=10.1.0.24,subnet-id=e9bkdrnv156ctcp14p5q
    
  5. Добавьте обработчик к балансировщику:

    $ yc lb nlb add-listener --name exchange-lb --listener name=yassl,port=443,target-port=443,external-ip-version=ipv4
    
  6. Получите сведения о целевых группах:

    $ yc lb tg list
    

    Скопируйте идентификатор созданной целевой группы.

  7. Подключите целевую группу к балансировщику, используя идентификатор целевой группы:

    $ yc lb nlb attach-target-group \
        --name exchange-lb \
        --target-group target-group-id=b7ruh2aqg7pr6ahus4an,healthcheck-name=exchange-hc,healthcheck-tcp-port=443
    

Настройте Accepted Domains и Email Address Policy

Домен создается по умолчанию. Если требуется изменить домен, используйте команду:

New-AcceptedDomain -Name yantoso.net -DomainName yantoso.net

Отредактируйте Email Address Policy:

Get-EmailAddressPolicy | Set-EmailAddressPolicy -EnabledPrimarySMTPAddressTemplate '@yantoso.net'

Всем новым почтовым ящикам будет автоматически добавляться псевдоним с доменом @yantoso.net.

Создайте ВМ для серверов Edge Transport

Серверы Edge Transport будут принимать основную пользовательскую нагрузку: принимать письма из интернета, отсеивать спам и перенаправлять сообщения на внутренние почтовые серверы Exchange.

Создайте ВМ для сервера vm-edge-a

Создайте ВМ vm-edge-a:

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины: vm-edge-a.

  3. Выберите зону доступности ru-central1-a.

  4. В блоке Публичные образы нажмите кнопку Выбрать. В открывшемся окне выберите образ 2016 Datacenter.

  5. В блоке Диски укажите размер загрузочного диска 50 ГБ.

  6. В блоке Вычислительные ресурсы:

    • Выберите платформу: Intel Cascade Lake.
    • Укажите необходимое количество vCPU и объем RAM:
      • vCPU — 4.
      • Гарантированная доля vCPU — 100%.
      • RAM — 8 ГБ.
  7. В блоке Сетевые настройки нажмите кнопку Добавить сеть и выберите сеть exchange-network. Выберите подсеть exchange-subnet-a. В блоке Публичный адрес выберите вариант Автоматически или выберите адрес из списка зарезервированных.

  8. В блоке Доступ укажите данные для доступа на виртуальную машину:

    • В поле Пароль укажите ваш пароль.
  9. Нажмите кнопку Создать ВМ.

$ yc compute instance create \
    --name vm-edge-a \
    --hostname vm-edge-a \
    --memory 8 \
    --cores 4 \
    --zone ru-central1-a \
    --network-interface subnet-name=exchange-subnet-a,nat-ip-version=ipv4 \
    --create-boot-disk size=50,image-folder-id=standard-images,image-family=windows-2016-gvlk \
    --metadata-from-file user-data=setpass

Создайте ВМ для сервера vm-edge-b

Создайте ВМ vm-edge-b:

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины: vm-edge-b.

  3. Выберите зону доступности ru-central1-b.

  4. В блоке Публичные образы нажмите кнопку Выбрать. В открывшемся окне выберите образ 2016 Datacenter.

  5. В блоке Диски укажите размер загрузочного диска 50 ГБ.

  6. В блоке Вычислительные ресурсы:

    • Выберите платформу: Intel Cascade Lake.
    • Укажите необходимое количество vCPU и объем RAM:
      • vCPU — 4.
      • Гарантированная доля vCPU — 100%.
      • RAM — 8 ГБ.
  7. В блоке Сетевые настройки нажмите кнопку Добавить сеть и выберите сеть exchange-network. Выберите подсеть exchange-subnet-b. В блоке Публичный адрес выберите вариант Автоматически или выберите адрес из списка зарезервированных.

  8. В блоке Доступ укажите данные для доступа на виртуальную машину:

    • В поле Пароль укажите ваш пароль.
  9. Нажмите кнопку Создать ВМ.

$ yc compute instance create \
    --name vm-edge-b \
    --hostname vm-edge-b \
    --memory 8 \
    --cores 4 \
    --zone ru-central1-b \
    --network-interface subnet-name=yasn-b,nat-ip-version=ipv4 \
    --create-boot-disk size=50,image-folder-id=standard-images,image-family=windows-2016-gvlk \
    --metadata-from-file user-data=setpass

Настройте серверы Edge Transport

Настройте сервер Edge Transport в зоне ru-central1-a

  1. Подключитесь к ВМ fsw-vm с помощью RDP.

  2. Подключитесь к ВМ vm-edge-a с помощью RDP. Используйте логин Administrator и ваш пароль. Запустите PowerShell.

  3. Создайте временную папку:

    mkdir C:\Windows\temp
    
  4. Установите роли ADLDS на сервер:

    Install-WindowsFeature ADLDS
    
  5. Настройте DNS-клиент:

    Get-NetAdapter | `
        Set-DnsClientServerAddress -ServerAddresses "10.1.0.3,10.2.0.3" 
    
  6. Настройте удаленный доступ к папке с дистрибутивами, находящейся на сервере fsw-vm:

    $Credential = Get-Credential # Username: yantoso\Administrator
    
    New-PSDrive -Name 'fsw-vm' -PSProvider:FileSystem -Root '\\fsw-vm.ru-central1.internal\distrib' -Credential $Credential
    

    Введите логин yantoso\Administrator и ваш пароль.

  7. Установите зависимости:

    & fsw-vm:\vcredist_x64_2012.exe /install /passive /norestart
    & fsw-vm:\NDP472-KB4054530-x86-x64-AllOS-ENU.exe /install /passive /norestart
    
  8. Скопируйте дистрибутив Microsoft Exchange на сервер vm-edge-a:

    copy-item fsw-vm:\ExchangeServer2016-x64-cu13.iso c:\windows\temp\ExchangeServer2016-x64-cu13.iso
    
  9. Укажите основной суффикс DNS:

    $Suffix = 'ru-central1.internal'
    
    Set-ItemProperty -path HKLM:\system\CurrentControlSet\Services\tcpip\parameters -Name Domain -Value $Suffix 
    
    Set-ItemProperty -path HKLM:\system\CurrentControlSet\Services\tcpip\parameters -Name 'NV Domain' -Value $Suffix
    
  10. Перезагрузите ВМ:

    Restart-Computer -Force
    

    Снова подключитесь к ВМ vm-edge-a через RDP и запустите PowerShell.

  11. Смонтируйте дистрибутив Exchange Server:

    Mount-DiskImage c:\windows\temp\ExchangeServer2016-x64-cu13.iso
    
  12. Установите Edge Transport Server на сервер vm-edge-a:

    & D:\Setup.exe /Mode:Install /InstallWindowsComponents /Role:EdgeTransport /IAcceptExchangeServerLicenseTerms /OrganizationName:MyOrg
    

Настройте сервер Edge Transport в зоне ru-central1-b

  1. Подключитесь к ВМ fsw-vm с помощью RDP.

  2. Подключитесь к ВМ vm-edge-b с помощью RDP. Используйте логин Administrator и ваш пароль. Запустите PowerShell.

  3. Создайте временную папку:

    mkdir C:\Windows\temp
    
  4. Установите роли ADLDS на сервер:

    Install-WindowsFeature ADLDS
    
  5. Настройте DNS-клиент:

    Get-NetAdapter | `
        Set-DnsClientServerAddress -ServerAddresses "10.2.0.3,10.1.0.3"
    
  6. Настройте удаленный доступ к папке с дистрибутивами, находящейся на сервере fsw-vm:

    $Credential = Get-Credential # Username: yantoso\Administrator
    
    New-PSDrive -Name 'fsw-vm' -PSProvider:FileSystem -Root '\\fsw-vm.ru-central1.internal\distrib' -Credential $Credential
    

    Введите логин yantoso\Administrator и ваш пароль.

  7. Установите зависимости:

    & fsw-vm:\vcredist_x64_2012.exe /install /passive /norestart
    & fsw-vm:\NDP472-KB4054530-x86-x64-AllOS-ENU.exe /install /passive /norestart
    
  8. Скопируйте дистрибутив Microsoft Exchange на сервер vm-edge-b:

    copy-item fsw-vm:\ExchangeServer2016-x64-cu13.iso c:\windows\temp\ExchangeServer2016-x64-cu13.iso
    
  9. Укажите основной суффикс DNS:

    $Suffix = 'ru-central1.internal'
    
    Set-ItemProperty -path HKLM:\system\CurrentControlSet\Services\tcpip\parameters -Name Domain -Value $Suffix 
    
    Set-ItemProperty -path HKLM:\system\CurrentControlSet\Services\tcpip\parameters -Name 'NV Domain' -Value $Suffix
    
  10. Перезагрузите ВМ:

    Restart-Computer -Force
    

    Снова подключитесь к ВМ vm-edge-b через RDP и запустите PowerShell.

  11. Смонтируйте дистрибутив Exchange Server:

    Mount-DiskImage c:\windows\temp\ExchangeServer2016-x64-cu13.iso
    
  12. Установите Edge Transport Server на сервер vm-edge-b:

    & D:\Setup.exe /Mode:Install /InstallWindowsComponents /Role:EdgeTransport /IAcceptExchangeServerLicenseTerms /OrganizationName:MyOrg
    

Добавьте серверы Edge Transport в Exchange

Каждый из серверов Edge Transport требуется подписать на сайт в своей зоне доступности.

Настройте подписку на сервере vm-edge-a

  1. Создайте папку subscribe:

    mkdir c:\subscribe
    
  2. Запустите Exchange Management Shell. Создайте файл подписки на сервере vm-edge-a:

    New-EdgeSubscription -FileName "C:\subscribe\$(hostname).xml"
    
  3. Скопируйте файл C:\subscribe\vm-edge-a.xml на сервер vm-exchange-a в папку C:\root\vm-edge-a.xml.

  4. Зайдите на сервер vm-exchange-a и запустите Exchange Management Shell.

  5. Подпишите Edge Transport сервера vm-edge-a на сайт ru-central1-a:

    New-EdgeSubscription -FileData ([byte[]]$(Get-Content -Path "C:\root\vm-edge-a.xml" -Encoding Byte -ReadCount 0)) -Site "ru-central1-a"
    
  6. Убедитесь, что подписка создана, с помощью команды:

    Get-EdgeSubscription
    
    Name            Site                 Domain
    ----            ----                 ------
    vm-edge-a       yantoso.net/Confi... ru-central1.internal
    
  7. Проверьте статус синхронизации:

    Test-EdgeSynchronization
    

    Параметр SyncStatus должен перейти в состояние Normal.

Настройте подписку на сервере vm-edge-b

  1. Создайте папку subscribe:

    mkdir c:\subscribe
    
  2. Запустите Exchange Management Shell. Создайте файл подписки на сервере vm-edge-b:

    New-EdgeSubscription -FileName "C:\subscribe\$(hostname).xml"
    
  3. Скопируйте файл C:\subscribe\vm-edge-b.xml на сервер vm-exchange-b в папку C:\root\vm-edge-b.xml.

  4. Зайдите на сервер vm-exchange-b и запустите Exchange Management Shell.

  5. Подпишите Edge Transport сервера vm-edge-b на сайт ru-central1-b:

    New-EdgeSubscription -FileData ([byte[]]$(Get-Content -Path "C:\root\vm-edge-b.xml" -Encoding Byte -ReadCount 0)) -Site "ru-central1-b"
    
  6. Убедитесь, что подписка создана, с помощью команды:

    Get-EdgeSubscription
    
    Name            Site                 Domain
    ----            ----                 ------
    vm-edge-a       yantoso.net/Confi... ru-central1.internal
    vm-edge-b       yantoso.net/Confi... ru-central1.internal
    
  7. Проверьте статус синхронизации:

    Test-EdgeSynchronization
    

    Параметр SyncStatus должен перейти в состояние Normal.

Удалите созданные ресурсы

Чтобы перестать платить за развернутые серверы, достаточно удалить все созданные виртуальные машины и балансировщик:

  • fsw-vm
  • ad-vm-a
  • ad-vm-b
  • vm-exchange-a
  • vm-exchange-b
  • vm-edge-a
  • vm-edge-b
  • балансировщик exchange-lb