Мы продолжаем рассказывать о компаниях-разработчиках решений (ISV), использующих облако Microsoft Azure. В этом выпуске мы представляем историю о том, как это делает компания Jelastic, разрабатывающая DevOps PaaS с поддержкой продвинутой оркестрации Docker-контейнеров. Рассказывает Дмитрий Лазаренко, директор по бизнес-развитию Jelastic.
Добрый день!
Jelastic – это универсальная облачная платформа, совмещающая в себе возможность использования PaaS (платформы как сервиса) и IaaS (инфраструктуры как сервиса). С помощью Jelastic можно значительно упростить разработку облачных сервисов, настроив себе за несколько минут окружение на Java, Ruby, Python, PHP и/или Node.JS и разместив в этой среде проект, используя плагины для Eclipse, NetBeans или IDEA. В прошлом году, на флагманской конференции Microsoft /build, была анонсирована поддержка Jelastic PaaS на платформенных ресурсах Microsoft Azure. О том, как это было, к чему привело и как все работает с техническо-технологической стороны, читайте под катом.
На данный момент «сцепка» Jelastic и Azure со стороны технологических решений выглядит следующим образом – платформа взаимодействует с Azure двумя способами:
- Ее можно установить целиком в Azure IaaS и получить собственное частное облако. При этом мы задействуем виртуальные машины, виртуальные сети и высокопроизводительные системы хранения данных Azure.
- Вычислительные ресурсы из разных регионов Azure можно подключить в частное облако Jelastic, развернутое в собственном ЦОД, и тем самым, получить гибридное облако. Этот сценарий востребован, когда клиентам недостаточно собственных вычислительных ресурсов и добавление дополнительных постоянных мощностей в свой ЦОД нецелесообразно из-за переменчивого профиля нагрузки. Например, предновогодняя распродажа или «Хабраэффект», который длится всего несколько дней, а потом спадает. В этом случае мы подключаем новые виртуальные машины из Azure динамически и используем их для масштабирования приложений. Благодаря использованию контейнерной технологии виртуализации, Jelastic может мигрировать приложения между частным облаком и регионами Azure в «живом» режиме без остановки работы приложения. Подобная технология значительно упрощает процесс переноса приложений между ЦОД, делая его абсолютно прозрачным и безопасным.
Оба вышеперечисленных решения можно установить в автоматическом режиме из Azure Marketplace – магазина партнерских решений, доступного пользователям Microsoft Azure.
История с автомасштабированием в публичное облако Azure также очень актуальна среди крупных клиентов. Облако Azure, доступное в большом количестве стран мира позволяет выделять нужные ресурсы как можно ближе к частному ЦОДу клиентов и, тем самым, минимизировать сетевые задержки и время, затрачиваемое на передачу данных. Кроме того, мы интегрировали Azure Traffic Manager для возможности организации высокодоступной гео-балансировки.
Посмотрим теперь на техническую составляющую. Архитектура нашего решения выглядит следующим образом — Jelastic включат в себя набор управляющих сервисов, написанных на Java. Эти сервисы включают в себя: оркестратор, систему безопасности, систему сбора метрик, биллинг, управление пулом шаблонов и т.д. Еще присутствует распределенная точка входа, состоящая из обратного прокси-сервера Nginx и сервера доменных имен Bind. HTTP или TCP-запросы к приложениям конечных пользователей проходят через эту точку входа и распределяются на конкретные приложения.
Пользователи Jelastic обычно создают окружения с архитектурой, похожей на следующую:
- 2 Nginx сервера для балансировки нагрузки
- 2-4 Java-сервера приложений (Glassfish/Tomcat/Jboss) с репликацией данных http-сессий
- SQL СУБД с репликацией (PostgreSQL, MariaDB, Percona)
- NoSQL СУБД с репликацией (MongoDB, Redis, Cassandra, Neo4j)
В процессе развертывания, несмотря на то, что в целом развертывание проходило без особых проблем, нам пришлось кое в чем адаптировать устоявшуюся архитектуру приложения к специфике Azure, которыми мы хотели бы поделиться. На первых порах возникло несколько проблем:
- Низкая производительность Azure Premium Storage в Linux. Оказалось, что это было следствием некорректного размера блока файловой системы, который применялся по умолчанию. После того как мы сменили размер блока с 63 на 4096, производительность дисковой подсистемы Azure Premium Storage выросла на несколько порядков.
- Сильная фильтрация сетевых пакетов в виртуальных сетях. Данная проблема для нас актуальна, т.к. мы используем виртуальные контейнеры, распределенные по нескольким виртуальным машинам Azure, и фактически Jelastic самостоятельно управляет внутренней сетью контейнеров. Проблема решилась благодаря созданию оверлейной сети, которая работает по нашим правилам.
- Ограничения по количеству внешних IP-адресов, которые могут быть назначены на одну виртуальную машину. На данный момент для одной VM можно задать не более 2х внешних IP-адресов. Т.к. в одной Azure VM может работать несколько виртуальных контейнеров, то им могло потребоваться более 3х IP-адресов. Проблема решилась путем применения зарезервированных IP (Reserved IP).
Взаимодействием с Microsoft Azure и предоставлением нашей платформы через Azure Marketplace мы преследуем несколько целей:
- Увеличение количества крупных клиентов, которым интересен PaaS для Java и других Open Source технологий поверх Microsoft Azure
- Запуск совместных продаж Jelastic и Microsoft корпоративным заказчикам, включая международный рынок
На данный момент уже есть несколько прекрасных результатов:
- Нашим решением на Azure заинтересовались несколько международных компаний
- Наше решение получило продвижение в рамках программы поддержки стартапов Go-to-Market accelerator. В частности, эта программа включала продвижение через блог и Twitter Microsoft, историю успеха на ресурсе Microsoft и грант на рекламную кампанию. Нашим решением на базе Azure заинтересовалась одна крупная нефтегазовая компания в Латинской Америке. Этому предшествовало много совместной работы с Microsoft в Бразилии.
В использовании Azure есть позитивные моменты, так как платформа дала нам возможность значительно упростить и ускорить установку Jelastic для конечного пользователя. Раньше этот процесс занимал несколько дней и требовал привлечения наших инженеров развертывания. Сейчас, с помощью Azure Marketplace клиент может самостоятельно развернуть изолированный кластер Jelastic и на это уйдет всего полчаса. Если же говорить о том, как мы это делали, как переезжали, то, как такового, перехода и не было: с помощью Azure и Azure Marketplace мы упростили и ускорили установку продукта, оставив при этом альтернативные варианты. На работы по созданию решения для Azure Marketplace ушло порядка полутора месяцев работы наших разработчиков и инженеров развертывания, но эти затраты окупились спустя 3-4 месяца.
Подробное руководство о том, как использовать Jelastic на Azure, доступно на сайте Jelastic.