Архитектура кластера Jelastic: высокоуровневый обзор системы Platform-as-Infrastructure

в 8:48, , рубрики: Без рубрики

В предыдущей публикации мы рассказали о новом позиционировании нашего продукта, о трансформации его в более комплексное решение Platform-as-Infrastructure, которое сочетает гибкость IaaS и удобство PaaS. В этой статье мы опишем структуру кластера Jelastic и его основные компоненты.

Основная задача Jelastic упрощать сложные технические решения, автоматизировать рутинную работу администраторов и разработчиков. Так, к примеру, уже сегодня вы можете легко развернуть комплексные приложения написанные на Java, PHP и Ruby. Поддержка мультиязчности была изначально заложена в архитектуру Jelastic. В ближайших планах также поддержка Node.js, Python и .Net.

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

Общая информация

Инсталяция Jelastic Platform-as-Infrastructure — это изолированный кластер, состоящий из группы серверов и сервисов, которые взаимодействуют как целостная система, предоставляя возможность удобно разворачивать, тестировать, поддерживать и масштабировать приложения в продакшине.

Кластер Jelastic состоит из физических серверов, на которых размещены виртуальные изолированные контейнеры, выделенные под пользовательские окружения, и управляющего сервера для внутренних системных сервисов.

image

Управляющий сервер

Управляющий сервер — содержит набор внутренних компонентов для управления ресурсами, обработки запросов, анализа активности пользователей и всеобщей поддержки кластера Jelastic. Обычно, мы рекомендуем использовать отдельный выделенный сервер, так как это предоставляет более высокий уровень стабильности и работоспособности. Компоненты управляющего сервера отвечают за:

  • Выделение необходимых ресурсов (provisioning)
  • Настройку шаблонов (кластеризация, балансировка нагрузки, прочее)
  • Управление жизненным циклом приложений
  • Развертывание приложений
  • Масштабирование приложений
  • Обработку пользовательских запросов через общий резолвер
  • Логи и статистику
  • Биллинг
  • Инструменты бизнес-аналитики
  • Мониторинг и проверку работоспособности

Каждый упомянутый выше процесс обслуживается отдельной подсистемой, детальное описание которых будет представлено в последующих публикациях.

Инфраструктурный слой

Jelastic относительно не привередлив к базовым ресурсам и может быть установлен как на голое железо, так и на такие IaaS решения как OpenStack, AWS Amazon, Azure, Rackspace и другие.

Количество физических серверов, необходимое для полноценного функционирования кластера, зависит от ожидаемой нагрузки и оговаривается перед установкой.

Физические сервера или же большие виртуальные машины (виртуализированные с помощью KVM, ESXi, Hyper-V и т. д.) в дальнейшем дробятся на небольшие изолированные виртуальные контейнеры. Набор таких контейнеров со всеми необходимыми для определенного приложения стеками образует пользовательское окружение.

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

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

image

Виртуализация контейнеров

Jelastic использует Parallels Virtuozzo Containers, что позволяет добиться очень хорошей плотности по количеству контейнеров на одном физическом сервере. Это достигается за счет использования виртуализации на уровне операционной системы.

Такой вид виртуализации позволяет разделить физические сервера на небольшие контейнеры, которые в результате более плотно размещаются в рамках выделенных физичеких ресурсов. Контейнеры, размещенные на физическом сервере, являются независимыми Linux машинами на CentOS (также могут поддерживаться другие версии).

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

Стоит отметить, что Jelastic является первой платформой, которая начала использовать полноценную контейнерную виртуализацию с первых дней. Наши ближайшие конкуренты OpenShift и CloudFoundry уже по одному разу перепроектировали свои решения внедряя слой псевдо-контейнерной виртуализации cgroup + SElinux и Warden соответственно. В ближайшем времени их ждет еще один этап редизайна архитектуры, в котором они уже будут немного ближе к текущему решению Jelastic — обе платформы мигрируют на Docker. Однако даже при этом Jelastic будет обладать рядом важных преимуществ — более качественная изоляция контейнеров при такой же эффективности утилизации ресурсов, наличие живой миграции, а также бесценный трехлетний опыт использования контейнеров внутри платформы.

Высокая доступность для приложений

Одной из функциональных особенностей является равномерное распределение контейнеров одного окружения по разным физическим серверам. Это достигается с помощью anti-affinity правил, которые регулируют распределение контейнеров по кластеру таким образом, что контейнеры одного окружения по возможности не попадают на один и тот же физический сервер.

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

Живая миграция

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

image

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

Режим гибернации (режим “сна”)

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

Будучи в спящем режиме контейнеры не потребляют ресурсы (только дисковое пространство) и дают возможность конечным потребителям сэкономить. Когда приложения опять становятся затребованными, платформа возвращает их в активное состояние, в котором они были до гибернации, буквально в считанные секунды. В будущих релизах данная функциональность будет значительно расширена и позволит конечным потребителям настраивать график гибернаций и “пробуждений”.

Кеширование на уровне контейнеров

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

Уровни доступа

Jelastic по своему полезен для различных груп пользователей — разработчики интернет приложений, средний и малый бизнес (которому необходим масштабируемый хостинг для стандартных приложений или SaaS), крупные компании по разработке софта, ИТ интеграторы, финансовые организации с развитыми ИТ департаментами, ну и конечно же провайдеры хостинговых услуг. Каждый тип пользователей Jelastic имеет определенный уровень доступа и определенный способ взаимодействия с платформой.

Существует три уровня доступа к Jelastic кластеру:

  • администраторы
  • разработчики или СМБ
  • конечные пользователи

image

Jelastic предоставляет две панели администрирования: Jelastic Cluster Panel (JCA) для администраторов кластера (в этом месяце планируется открыть публичный доступ к большому объему документации по этой панели), а также панель управления (Dashboard) для разработчиков. Наличие двух панелей управления с разделенными функциональными возможностями делает систему Jelastic удобным решением для Dev и Ops команд.

Администраторы

Администраторами платформы Jelastic являются Ops отделы компаний владеющих установленными кластерами. После установки платформа переходит в их полное распоряжение.

Используя Jelastic Cluster Admin Panel администраторы могут настроить основные конфигурации (лимиты, квоты, тарифы, локализацию и прочее), а также проводить обслуживание кластера во время обновлений или регламентных работ.

Четыре основные задачи, которые выполняются администраторами в процессе жизненного цикла кластера Jelastic это:

  • Установка
  • Запуск
  • Управление
  • Обновление

image

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

Разработчики и СМБ

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

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

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

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

image

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

Конечные пользователи

Конечные пользователи связаны с кластером Jelastic косвенно, путем использования приложений, развернутых разработчиками в их окружениях.

Все входящие запросы пользователей направляются на доменное имя соответствующего приложения и обрабатываются в один из следующих способов:

Jelastic использует несколько синхронизированных резолверов для одновременного обслуживания запросов и распределяя нагрузку между ними. Количество резолверов зависит от общей нагрузки на приложения в кластере.

image

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

Внейшний IP адрес рекомендуется использовать для production приложений, так как это значительно уменьшает потенциальные риски влияния одних приложений на другие. Также использование внешнего IP адреса открывает доступ к таким возможностям как удаленная отладка приложений, удаленный бекап, использование JMX, FTP, использование пользовательских SSL сертификатов, работа с вебсокетами.

Архитектура кластера Jelastic: высокоуровневый обзор системы Platform as Infrastructure

Резюме

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

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

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

CTO, Jelastic
Руслан Синицкий

Автор: jelastic

Источник

Поделиться

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