Jelastic — это универсальная облачная платформа, которая совмещает в себе архитектуры PaaS (платформа как сервис) и IaaS (инфраструктура как сервис). На Jelastic можно за несколько минут развернуть окружение Java, PHP, Ruby, Python или Node.JS и запустить в нём настроенное и готовое к высокой нагрузке приложение. При этом возможность деплоя через GIT, SVN, а также плагины для IDEA, NetBeans, Eclipse позволяют тратить ещё меньше времени на деплой и больше на разработку.
В этой статье мы расскажем об одном из последних обновлений этой платформы — 2.5, которое добавило ряд интересных возможностей.
Масштабируемость — одно из главных требований к облачной платформе. В дополнение к автоматизированному вертикальному масштабированию (увеличение количества клаудлетов в зависимости от текущих требований приложения), Jelastic позволяет также увеличить / уменьшить количество серверов в окружении, если это необходимо для приложения.
Релиз Jelastic 2.5 делает возможным горизонтальное масштабирование не только серверов приложений, но и всех других узлов в вашей среде, включая:
Единственное исключение — узел Maven (инструмент для сборки Java проекта: компиляции, создания jar, создания дистрибутива программы, генерации документации), его масштабировать нет необходимости.
При этом добавилось автоматическое горизонтальное масштабирование — пользователь может настроить триггеры, при срабатывании которых в окружение будут автоматически добавляться новые узлы. Есть два типа триггеров:
CPU;
RAM.
Нужно просто указать период времени ожидания и предел использования ресурсов (верхний и нижний) в процентах. Если уровень нагрузки превышает указанный верхний предел, то срабатывает триггер и начинается отсчёт времени. Если за указанное время уровень нагрузки не упал ниже указанного предела, то триггер срабатывает и добавляется новый узел. Таким же образом узел убирается при снижении нагрузки.
Процесс масштабирования остался всё так же прост: требуется всего лишь задать нужное количество узлов соответствующими кнопками в мастере топологии окружения.
Максимальное доступное количество однотипных узлов может варьироваться. Как правило, этот предел составляет 8 узлов. Все вновь добавляемые узлы создаются на различных серверных нодах, обеспечивая ещё большую надёжность и высокую доступность.
Серверы приложений
В предыдущих обновлениях Jelastic уже была добавлена поддержка горизонтального масштабирования серверов приложений. В версии 2.5 каждый вновь добавленный сервер приложений узла скопирует уже имеющиеся, то есть он будет содержать тот же набор конфигураций и файлов внутри. В случае, если у вас уже есть несколько экземпляров с разным контентом и вы добавляете ещё один, произойдёт «клонирование» самого первого узла.
Балансировщик нагрузки
Первое, что вы должны заметить при увеличении количества экземпляров сервера приложений — это включённый автоматически nginx-балансировщик, который появляется в топологии:
Этот сервер практически помещён «на передовой» вашего приложения и становится точкой входа среды. Его основная роль заключается в том, чтобы обрабатывать все входящие запросы пользователей и равномерно распределять их между указанным количеством серверов приложений. Такое распределение нагрузки осуществляется на основании HTTP-балансировки, хотя можно по желанию настроить TCP (например, исходя из требований приложения).
Увеличение количества nginx-балансировщиков имеет смысл, если вы хотите улучшить доступность вашего приложения и получить несколько точек входа. В этом случае вам необходимо иметь публичный IP-адрес для каждого из балансировщиков.
Каждый вновь добавленный узел nginx-балансировщика будет копировать начальный (точно так же, как это было описано для узлов сервера приложений выше).
Базы данных
Теперь с Jelastic можно масштабировать базы данных SQL и NoSQL:
Каждый вновь добавленный узел базы данных имеет собственное имя хоста (который состоит из DB_name, ID узла и окружающей среды хоста) и учётные данные для доступа администратора, которые вы получите в отдельных письмах после добавления узла. В отличие от подхода с серверами приложений и балансировщиками, новый узел базы данных будет добавлен в кластер в состоянии по умолчанию, т. е. без копирования данных и настроек.
Тем не менее, вы уже имеете возможность получить полный кластер из двух узлов с автоматически настроенной master-slave репликацией, всего в несколько кликов.
Memcached
Добавление нескольких экземпляров Memcached в среду приложения улучшит его отказоустойчивость. Например, вы можете назначить каждому узлу ответственность за определенную область данных приложения, или даже настроить приложение для хранения кэша на всех узлах одновременно. Таким образом, каждый сервер будет содержать полный кэш-дубликат, который устраняет риск возможных простоев приложений или потери кэшированных данных.
Необходимо учитывать, что каждый новый memcached-узел, созданный в результате горизонтального масштабирования исходного, будет содержать стандартный набор данных и конфигурации без каких-либо настроек:
Кроме того, вы также можете использовать memcached-кластеры для хранения пользовательских сессий, что особенно полезно при работе с большим количеством кластерных серверов приложений. Впоследствии их можно извлечь и повторно использовать любым сервером приложений в кластере, если с оригиналом (который изначально обрабатывал эту сессию) происходит сбой. И ваши клиенты не заметят ничего. Несколько кэширующих узлов, добавленных в среду, вы можете настроить для хранения копируемых сессий в каждом из них, гарантируя, что эти сессии будут доступны до тех пор, пока по крайней мере один сервер Memcached работает.
VPS
Облегчилось управление Jelastic Virtual Private Servers — теперь можно добавить несколько VPS в одно окружение, нет необходимости создавать новое окружение для каждого из них. Тем не менее, каждый VPS-узел остаётся независимым сервером для запуска отдельных приложений:
Увеличение количества узлов для VPS-кластера добавляет по умолчанию «голый» сервер. Очевидно, что каждый узел имеет свой собственный hostname и учётные данные администратора, приведенные в соответствующем письме по электронной почте, а также отдельный публичный IP-адрес.
Итак, резюмируя вышесказанное, хочется отметить основную фишку обновления Jelastic 2.5 — возможность горизонтального масштабирования любых узлов. Это позволяет пользователям увеличивать / уменьшать количество серверов приложений в окружении, если это требуется в связи с изменениями в нагрузке приложения. А значит, приложение будет лучше справляться с нагрузкой и увеличится его отказоустойчивость для конечных пользователей.
И ещё один интересный анонс: в скором будущем в Jelastic ожидается поддержка платформы .NET, что сделает его ещё более универсальной средой, пригодной для развёртывания практически любых приложений.