Блог Amazon Web Services

Разворачиваем GridGain кластер на AWS через AWS Marketplace: Часть I

Денис Баталов, архитектор AWS, @dbatalov

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

Для справки немного о самой компании. GridGain Systems — калифорнийский стартап, который дорос до серьезной и быстрорастущей международной компании с клиентами по всему миру. Среди клиентов GridGain можно встретить таких именитых мастодонтов, как Сбербанк, Barclays, American Express, Microsoft, IBM, Huawei, RingCentral и Workday. Все они тем или иным образом используют GridGain In-Memory Data Fabric — платформу и фреймворк, который представляет из себя распределенное memory-first хранилище и вычислительную систему, масштабируемую горизонтально и дающую колоссальный прирост производительности, благодаря своей архитектуре.

Платформа находит применение во всех отраслях и секторах, начиная от финансового, заканчивая cферой Интернета Вещей. Такая широкая область применения обусловлена обилием компонент, работающих поверх распределенного хранилища данных (таких как распределенный ANSI-99 SQL движок), поддержкой распределенных ACID транзакции, real-time streaming, machine learning и многим другим.

В этой серии статей Денис Магда расскажет о том, как начать работу с GridGain кластером на AWS и доходчиво объяснит, как этот зверь работает “под капотом».


Денис Магда, GridGain Product Manager

В наше время, когда объемы хранимой и обрабатываемой информации разрастаются с небывалой скоростью, уже нелегко опираться на хранилища и платформы, которые проектировались и создавались совершенно для иных целей. Не каждая компания может позволить себе переход на очередной мэйнфрейм, если необходимо сохранить производительность при колоссально возросших объемах данных, хранимых в классической реляционной базе данных. Более того, зачастую, обновление железа выливается в своего рода временную пилюлю или инъекцию: мы вкладываем огромные деньги на обновление, но получаем непропорциональный прирост производительность и, более того, понимаем, что в скором времени снова упрёмся в потолок и железо, на котором работает СУБД, придется обновлять вновь.

Данный вызов нашего времени породил определенное число распределенных реляционных баз данных, NoSQL хранилищ и Data Grids, которые воплощают в жизнь концепцию горизонтального масштабирования: хранение и обработка данных происходит в кластере состоящего из N-го кол-ва машин, и, если необходимо увеличить производительность при возросшем объеме данных, то достаточно добавить новый узел в кластер, работающий на обычном железе.

GridGain In-Memory Data Fabric — как раз та платформа, которая позволяет организовать хранение данных в RAM (с опциональной возможностью хранение данных на диске) в распределенном кластере машин, ускоряя работу приложений в десятки, сотни, тысячи раз. Платформа построена на базе open source проекта Apache Ignite In-Memory Data Fabric и состоит из множества компонент, позволяющих выполнять распределенные ANSI-99 SQL запросы и транзакции, соответствующие ACID семантике, запускать распределленные вычисление и обрабатывать потоки данных в режиме реального времени, разворачивать микросервисы и многое другое.

Благодаря тому, что GridGain — это распределенное хранилище и вычислительная платформа, продукт находит применение во множестве отраслей и индустрий, таких как телекоммуникации, финансовый сектор, интернет вещей, ритейл. На базе GridGain работают критические продукты Barclays, Сбербанк, RingCentral, Silver Spring Networks и многих других компаний, которые смогли достичь колоссального прироста производительности благодаря горизонтальному масштабированию GridGain. С некоторыми вариантами использования можно ознакомиться на данной странице.

Что касается развертывания GridGain-кластера, то его можно с легкостью запустить на собственном железе, в облаке, либо в контейнерах. В данной статье мы узнаем, как можно быстро развернуть GridGain в AWS облаке, используя AWS Marketplace и начать использовать его в тестовых целях.

Установка GridGain через AWS Marketplace

GridGain Enterprise Edition можно развернуть на AWS, минуя AWS Marketplace, но мы хотим сделать это наиболее быстрым для нас способом, следуя подготовленной инструкции.

В соответствии с инструкцией, перейдем в AWS Marketplace и введем GridGain в строку поиска или можно сразу же перейти по следующей ссылке.

Нажимаем на “Continue” и, пользуясь “1-Click Launch” опцией, выбираем любую из доступных EC2 виртуальных машин, к примеру, m3.medium.

GridGain узлы, которые будут входить в состав кластера взаимодействуют друг с другом через определенные TCP/IP порты на уровне discovery и communication сетевых компонент. В демонстрационных целях мы откроем все порты для наших AWS-узлов через группу безопасности (“Security Group”).

При необходимости настраиваем иные параметры и нажимаем на “Launch with 1-Click”.

Переходим в EC2 Console и проверяем, что виртуальная машина была успешно запущена.

Запуск GridGain-кластера на AWS

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

Подключаемся к AWS через ssh, используя ключ и DNS имя виртуальной машины:

ssh -i "dmagda.pem" ec2-user@ec2-54-82-240-125.compute-1.amazonaws.com

В случае отсутствия ранее созданного ключа для SSH доступа к виртуальной машине EC2, такой ключ нужно создать следуя инструкции.

Проставляем следующие переменные окружения:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64
export IGNITE_HOME=/usr/local/bin/gridgain/gridgain-enterprise-fabric-7.7.7
export GRIDGAIN_HOME=${IGNITE_HOME}

Примечание: версия GridGain и Java может отличаться в вашем окружении. В результате чего, значение переменных окружения JAVA_HOME и IGNITE_HOME может быть иным.

Переходим в bin-каталог GRIDGAIN_HOME:

cd ${GRIDGAIN_HOME}/bin

Выполняем скрипт ignite-amazonaws-example.sh, который запустит GridGain-узел в собственном JVM-процессе.

Давайте переведем данный процесс из foreground в background, нажав Ctr+Z и выполнив команду bg. После этого запустим еще один GridGain-узел на той же AWS виртуальной машине с помощью ignite-amazonaws-example.sh.

Посмотрев на лог данного узла, мы заметим, что параметр “Topology snapshot” теперь равен 2. Это говорит о том, что мы смогли запустить GridGain-кластер из двух узлов на одной AWS виртуальной машине.

Продолжение следует…

Затратив буквально 5 минут нашего времени, нам удалось запустить кластер GridGain в AWS облаке, используя AWS Marketplace. В следующих постах мы покажем, как запустить кластер на нескольких AWS виртуальных машинах, а также, как подключиться к нему со стороны окружения разработчика, загрузить в него данные и позапускать разного рода приложения, которые будут взаимодействовать с кластером.