Живая миграция контейнеров Docker между облаками

в 7:37, , рубрики: #isvcloudstory, azure, azure marketplace, docker, jelastic, Microsoft Azure, Блог компании Microsoft, живая миграция, контейнеры

Мы продолжаем рассказывать о компаниях-разработчиках решений (ISV), использующих облако Microsoft Azure. В этом выпуске мы продолжим рассказ про платформу компании Jelastic темой живой миграции контейнеров Docker между облачными провайдерами. Предыдущие статьи цикла вы всегда можете найти на Хабре по ссылке #isvcloudstory. — Владимир Юнев

Последние исследования IDC в сфере облачных технологий показали, что 57% компаний уже внедрили различные формы облачных услуг, 44% планируют или уже используют частное облако и 64% компаний ориентированы на гибридное облако. Это порождает необходимость перемещать рабочие площадки из одного облака в другое, сохраняя при этом высокую производительность и целостность данных. Одним из способов плавного перемещения работающих приложений между разными физическими серверами или датацентрами является живая миграция контейнеров.

Живая миграция контейнеров Docker между облаками - 1

Обычно нужно заново перепаковывать контейнеры с рабочими площадками при каждом перемещении приложения с одного облака или дата центра в другой. В этом случае основной проблемой становится вопрос  автоматизации и бесперебойности миграции.

В нашей статье, мы покажем как можно решить главные проблемы DevOps команд с помощью живой миграции, а также рассмотрим пример практического применения этого решения.

Решение: живая миграция

Живая миграция в Jelastic облаке происходит с помощью замораживания контейнеров на одном сервере и восстановлении их на другом без простоя или потери данных и входящих соединений. Такая миграция позволяет:

  • улучшить производительность
  • оптимизировать распределение нагрузки в кластере, что обеспечивает более продуктивное использование ЦОД
  • быстро и легко смигрировать приложения на более мощную инфраструктуру без прерывания обслуживания
  • усовершенствовать процесс непрерывной интеграции и развертывания Docker контейнеров без необходимости дополнительно перенастраивать окружение

Таким образом, благодаря миграции контейнеров, DevOps получают возможность более эффективно управлять жизненным циклом приложений. Платформа Jelastic поддерживает живую и автономную миграцию контейнеров: вы легко можете перемещать приложение с одного региона на другой, без необходимости перенастраивать контейнеры и заново разворачивать приложение.

В дополнение к этому, пользователи могут перемещать свои приложения между разными облачными вендорами с помощью мультиоблачного решения Jelastic. Хостинговые провайдеры и крупные компании могут комбинировать частное и публичное облако в рамках своих дата центров, а также внешних облачных вендоров. Данная интеграция обеспечивает высокую доступность, предотвращает потерю данных или незапланированный простой, улучшает производительность и помогает уменьшить затраты.

Как это работает?

Для того, чтобы смигрировать ваши приложения с помощью платформы Jelastic, просто нажмите на значок региона рядом с вашим приложением (или же, вы можете нажать Change environment topology и выбрать опцию Migrate из списка в правом верхнем углу) и выберите нужный регион в выпадающем списке.

Доступность опции живой миграции обозначена значком LM (live migration) под названием соответствующего региона.

Живая миграция контейнеров Docker между облаками - 2

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

В то же время, все TCP соединения переустановятся на новом хосте с помощью режима восстановления TCP в ядре Linux. Это позволит поддерживать постоянное соединение для клиент-серверных приложений, которые работают на мигрирующих контейнерах, с помощью переназначения IP адресов на ново назначенные хосты. Установленные ранее настройки соединения будут возобновлены в том же состоянии, в котором они находились до миграции. Заморозка длится всего несколько секунд, после чего нужное приложение продолжает работать.

Увидеть в действии

Рассмотрим как работает живая миграция на примере SeisComP – сейсмологического программного обеспечения для сбора и обработки данных, а также интерактивного анализа землетрясений в режиме реального времени.

Для того, чтобы с лёгкостью развернуть вышеупомянутое приложение, мы воспользуемся поддержкой Docker контейнеров в Jelastic:

Откройте мастер настройки окружения Jelastic с помощью кнопки  New environment в правом верхнем углу панели инструментов и перейдите на вкладку Docker.

Выберите unigeocloud/seiscomp контейнер в соответствующем блоке (с деталями можно ознакомиться в инструкции Добавление Docker контейнера в окружение Jelastic) и добавьте его в Application Server раздел топологии.

Живая миграция контейнеров Docker между облаками - 3

Затем, определите лимит количества потребляемых ресурсов для контейнера, выберите регион для размещения окружения (в нашем случае это AWS), назовите его и подтвердите создание.

Теперь можно мгновенно запустить приложение с помощью кнопки Open in browser. На открывшейся странице подключитесь к удалённому рабочему столу, используя свои учётные данные (которые вы получили ранее на электронную почту).

Запустите приложение Seiscomp waveforms с графической визуализацией данных, полученных от определённых сейсмических станций, которое позволяет следить за сейсмологической ситуацией в режиме реального времени.

Живая миграция контейнеров Docker между облаками - 4

Пока отслеживание автоматически выполняется в фоновом режиме, вернитесь в панель управления и смигрируйте ваше приложение в другой регион (в нашем случае это Azure) с помощью соответствующей опции в настройках окружения:

Живая миграция контейнеров Docker между облаками - 5

Обратите внимание на зелёный ярлык LM возле выбранного региона – это значит, что теперь можно приступить к живой миграции с помощью соответствующего переключателя, чтоб переместить выбранное окружение без простоя.

Нажмите кнопку Verify & Migrate и подтвердите начало процесса.

Дождитесь завершения миграции — вы увидите соответствующее уведомление на панели инструментов, а также получите электронное письмо с новыми данными приложения (к примеру, IP адресами). Также изменится ярлык региона рядом с приложением.

Живая миграция контейнеров Docker между облаками - 6

Во время миграции приложение продолжает работать и принимать гео данные.

Живая миграция контейнеров Docker между облаками - 7

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

Настройка сети: для того, чтобы реализовать данное решение, были задействованы некоторые дополнительные конфигурации платформы, а именно — мы объединили все регионы под общей сетью для доступа через единую точку входа (Shared LB). Это обеспечило возможность работы приложения  под тем же доменом относительно выбранного аппаратного оборудования, чтобы ничего не перенастраивать после миграции. При этом, такой способ реализации подразумевает, что ни один контейнер окружения не имеет внешнего IP адреса.

Просмотрите видео как это работает в реальности:

Заключение

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

Зарегистрируйтесь и попробуйте сами. Больше реальных случаев использования миграции между облаками можно увидеть на следующих видео:

Azure Marketplace

Пользователи Azure могут получить быстрой доступ к платформе Jelastic через удобный Azure Marketplace. Начните работать с Jelastic уже сегодня!

Автор: Microsoft

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js