Заказчик понял, что в связи с последними событиями можно ожидать внезапного окончания сервиса в облаке MS для всей компании. Если бы там крутилась только почта, то проблем бы не было: есть очень много опенсорсных или OS-based решений российской разработки. Но кроме самой почты ещё были календари, согласования, брони переговорок, общие ящики, сложные права доступа на отпуска и все прочие вещи. Нужно было сохранить не только почту, но и все процессы Exchange, с которыми работала компания, потому что они были глубоко в её бизнес-процессах.

И заказчик выбрал Exchange 2019 в частном облаке. Знаю, звучит странновато, но это реальность: лицензии уже были, стек знакомый, ресурсы выделены, а максимум, что сделает MS в такой ситуации — это лишит поддержки. Что заказчику не угрожало, потому что официальной поддержки его уже лишили. Мы поддерживали его вместо MS.


Вот эти согласования документов, интегрированные с почтой — одна из причин переезда с MS на MS

В общем, дальше надо было просто взять и переехать так, чтобы сотрудники компании это не почувствовали. И здесь было несколько подводных камней. Началось с того, что MS, видимо, не рассматривала в принципе это направление миграции: O365->On-prem просто не покрыт документацией, а в интерфейсе новой консоли серенький и неактивный в духе «under construction». Ну и сами ящики оказались не очень маленькими: при нормальной подписке ящик получает лимит до 100 Гб, и пользователи уверенно заполнили их примерно до 40-50 Гб каждый. После того как за неделю непрерывной синхронизации мы мигрировали три ящика, стало понятно, что с этим надо что-то делать.

Как делали


Развернули четыре виртуальные машины на Windows Server 2019 Standard и установили следующие роли Exchange 2019: две штуки Exchange CAS/Mailbox и две штуки Exchange Edge Transport. CAS/Mailbox — это, собственно, штуки, которые несут основную почтовую функцию, а EDGE — это сервера, которые принимают обращения клиентов из DMZ и передают мейлбоксам. 2+2 — это рекомендованная схема, которая обеспечивает достаточную отказоустойчивость и балансировку. EDGE просто переключаются или передают друг другу сессии в случае проблем, а между мейлбоксами идёт репликация баз, и, если один ложится, можно переподключиться к другому инстансу, что и сделает один из EDGE с пользователем. Кроме всего прочего, это означает, что сервера можно обслуживать без выключения сервиса.

Соответственно, на серверах с ролью CAS/Mailbox настроен кластер DAG. Для миграции почты и одновременной работы пользователей в Exchange Online и On-Premise Exchange была настроена конфигурация Exchange Hybrid. DAG – это балансировщик между мейлбоксами, а Hybrid — решение, чтобы одновременно в своей инфраструктуре было видно и облако, и локальное решение. Это нужно, чтобы Active Directory не было разницы, где лежат объекты. То есть во время переезда учётки пользователей лежали в локальной AD, а почтовые ящики — половина в облаке, половина на локальном сервере.

Канал до облака MS у нас был 1 Гб/с. Но политика миграции у MS очень простая: любые подобные действия не должны замедлять работу системы для пользователей. То есть синхронизацию можно выполнять только с той скоростью, которую разрешает MS, а это не очень-то много. По факту у меня получалось около 30-40 Гб в день, что очень быстро стало проблемой из-за размеров пользовательских ящиков.

Достать пользовательские ящики чем-то другим без особых затрат тоже не представлялось возможным: наложенные средства бэкапа упрутся примерно в те же ограничения (или будут прерывать сервис пользователям), а собственные снапшоты MS делает в теневом виде, и снаружи к ним доступа просто нет.

Проблема с размером ящиков


При переносе ящика из облака в локальное хранилище, грубо говоря, создаётся его копия у нас на инсталляции, а затем Hybrid меняет адресацию на локальное хранилище. Пользователь ничего не замечает, перенастраивать на рабочих местах ничего не нужно, загрузки на поддержку внутри компании нет.

Проблема в медленном переносе. При таких объёмах почты он грозил затянуться на несколько месяцев. И если месяц фоновой синхронизации ещё как-то более-менее нормально смотрится, то полгода — это уже совсем перебор. Нужно было что-то делать с почтой, то есть как-то почистить ящики.

Пользователи ещё до миграции единогласно сказали, что в почтовых ящиках нет ни одного сообщения, которое можно было бы безболезненно удалить. Лукавили, конечно, но это легло в условия задачи. Соответственно, вариант «удалить старую почту» или «удалить сообщения по фильтру» сразу отпадал.

Второй предложенный вариант был в том, чтобы собрать по рабочим станциям локальные PST, положить их в общую файлопомойку в виде архива и не переносить то, что в них было. То есть мы бы получили некий медленный бэкап почты, но, чтобы получить доступ к какому-то старому письму, нужно было бы подключать PST к Outlook и ковыряться в нём. Этот вариант заказчику тоже не понравился. После некоторых размышлений пришли к тому, что можно сохранять в архив и сжимать всю почту, кроме как за последний год: то есть, например, если ящик жил шесть лет, то пять лет мы кладём в локальный архив, а последний год переносим вживую.

В итоге мы решили архивировать ящики таким образом, а также максимально их порезать в плане технических данных. Если что, MS хранит очень много удалённых писем, причём как тех, которые видны пользователю в корзине, так и просто всех удалённых за всю историю ящика на случай, если админу понадобится залезть в бэкап. Можно ограничить таймер, например, поставить хранение на 14 дней: после того, как из «распухшего» ящика будет что-то удалено, он будет «распухшим» ещё эти самые 14 дней.

Собственно, мы отключили «SingleItemRecoveryEnabled» и установили время хранения удалённых элементов «RetainDeletedItemsFor» до ноля (пока это не ноль, будет теневая копия ящика, по сути). Плюс включили сжатие. Это позволило уменьшить размер почтовых ящиков для переноса в десять и более раз.

Ещё подводные камни


Началось всё просто, с Read-Only контроллера на стороне заказчика. Домен-контроллеры почему-то были только в режиме Read-Only (RODC), видимо, так они достаются из коробки в каких-то инсталляциях (хотя я такое вижу первый раз). Один из контроллеров домена был конвертирован в RWDC, делов-то.

Вторая особенность: при базовой настройке Exchange Hybrid есть проблема с основными SMTP-адресами групп рассылок и части пользователей. Синхронизация делается с помощью Azure AD Connect. Это синхронизирует локальный AD с Office (облаком), чтобы все параметры передавались в обе стороны. Один из основных параметров для корректной синхронизации SMTP “proxyaddresses”. У части пользователей и групп рассылок данный параметр заполнен не был, и при первой синхронизации после настройки Exchange Hybrid для данных пользователей был изменен основной SMTP-адрес на адрес организации Azure AD по умолчанию (company.onmicrosoft.com). А он не соответствует реальному, то есть пока не поправили проблемным пользователям, из локальной инфраструктуры не доходила почта до облачных пользователей.

Теперь самая мякотка. Так как обратную миграцию пользователей из Office365 на On-Premise Exchange MS, по всей видимости, не предполагал (никакой документации на этот счёт нет), то возникла проблема, как связать уже существующих пользователей, групп рассылок, общие почтовые ящики и календари в Exchange Online c On-Premise Exchange.

Собственно, вот так это место выглядит в новой консоли:


Пункт серый: как бы формально он есть, но воспользоваться нельзя

Делалось этой повершеллом за один раз. При переходе из новой консоли в классическую консоль уже есть функция миграции.



Был выгружен полный список почтовых ящиков пользователей из Exchange Online и на их основе созданы объекты RemoteMailbox на On-Premise Exchange.

Часть групп рассылок уже была синхронизирована с локальным AD заказчика, для них также были созданы объекты на On-Premise Exchange. Были группы, которые существовали только в облаке. Для таких групп создали аналогичные группы в AD и накатили настройки идентичные облачным. После синхронизации группы из локального AD объединили с облачными. Аналогичным образом настроили календари для того, чтобы пользователи в облаке видели информацию календарей пользователей на локальном Exchange и наоборот. После приведения локального Exchange в соответствие c Exchange Online заказчика, смигрировали часть пользователей на локальный Exchange. Пользователи в облаке и локальном Exchange могут спокойно обмениваться почтой друг с другом, а также принимать и отправлять почту наружу прямо во время процесса.

Итого


Развернули инфраструктуру в частном облаке, которая даёт какие-то гарантии того, что сервис будет спокойно работать в наше сложное время. Потом начали миграцию: устаревшие данные перенесли в локальные PST с архивацией на стороне клиента.

В общей сложности у заказчика около 1500 ящиков, всего около 15 Тб данных после сжатия—архивирования—удаления удалённых. То есть проект не просто не маленький, а очень здоровенный, но при этом службе поддержки со стороны заказчика практически не пришлось взаимодействовать с пользователями. Опыт очень интересный, учитывая общую кровавость энтерпрайза. Если кому-то понадобится, полный инструментарий уже есть.

Комментарии (9)


  1. Stillgray
    11.08.2022 10:17
    +1

    Импортозамещение не "в затяг" какое-то...


  1. THT
    11.08.2022 10:21
    +1

    " устаревшие данные перенесли в локальные PST с архивацией на стороне клиента."

    И так оставили? Почему не залить архивный PST файл в ящик пользователя, а ещё лучше в "Сетевой архив на месте".

    PST файл не надёжный, медленный. Я несколько лет назад избавился от них, прям выдохнул.


    1. N_gavrilenko Автор
      11.08.2022 10:52
      +3

      Это временное решение на момент миграции. После завершения миграции и по мере выделения дополнительных ресурсов в частном облаке, эти данные уезжают в архив.


  1. holyx
    11.08.2022 10:32

    Как же всё просто, когда нужно только "ехать", а "шашечки" не нужны. Но в некоторых областях(например, разработка ПО сертифицированного ФСТЭК) обязательно нужно использовать лицензионное ПО и подтверждать наличие лицензий документами от вендора и бух документами о приобретении такого. Интересно, как в сложившейся ситуации будут выкручиваться разработчики и регуляторы, ведь писать нашим компаниям надо больше, а бюрократические препоны быстро не убирают.


  1. catBasilio
    11.08.2022 10:52

    Exchange 2019 в частном облаке. Знаю, звучит странновато

    Что именно странно? что в 22 году кто-то не публичные облака использует?


  1. DaSte
    11.08.2022 11:35

    Повествование показалось немного скомканным. Как будто автор второпях хотел поделиться своим опытом. Опыт безусловно хороший, но на импортозамещения ну ни как не тянет, заголовок бы поправить как минимум. 

    Не увидел сроки реализации проекта. Допустим на анализ инфраструктуры, развертывания EX onprem с DAG’ом в российском Cloud’е и построение гибрида с отладкой ушло 5-10 рабочих дней. А 15 Тб в итоге за сколько удалось переместить?

    То что у вас ReadOnly контроллеры встретились на проекте, могу предположить заказчик был филиалом зарубежной компании. И скорее всего вы мигрировали с западного тенанта в onprem решение.

    Месяц назад заказчику (дочка европейской энергетической компании) делали гибрид, только те наоборот ящики в Exchange Online перемещали. На осторожный вопрос “уверяны?” получили утвердительный ответ.


    1. N_gavrilenko Автор
      11.08.2022 11:44

      С учётом оптимизации размеров почтовых ящиков длительность миграции составила 3 месяца.


  1. Gilbert00
    11.08.2022 17:37
    -1

    Текст корявый, подготовлено наспех. Учитесь грамотному стилю выражать свои мысли.


  1. Walk0man
    12.08.2022 00:37

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