Найти в Дзене
Алексей Атлетов

Apache Ignite. Создание кластера.

Описание кластера Apache Ignite.

Apache Ignite - это кластерный продукт, который возможно настраивать различными способами.
При запуске узла назначается одна из двух ролей: серверный узел или клиентский узел. Серверные узлы являются рабочими серверными нодами кластера; они кэшируют данные, выполняют вычисления и т.д. Клиентские узлы присоединяются к топологии как обычные узлы, но они не хранят данные. Клиентские узлы используются для передачи данных в кластер и выполнения пользовательских запросов. Можно сказать, что это сервера приложений.


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

Механизм обнаружения.

В продукте Apache Ignite реализован инструмент для автоматического создания кластера. Узлы могут автоматически обнаруживать друг друга и образовывать кластер. Это позволяет при необходимости масштабироваться без необходимости перезапуска всего кластера.

Администраторы также могут использовать гибридную облачную поддержку Ignite, которая позволяет устанавливать соединение между частными и общедоступными облаками, такими как Amazon Web Services, предоставляя им лучшее из обоих миров ИТ.

Ignite предоставляет две реализации механизма обнаружения, предназначенные для различных сценариев использования:

Обнаружение с помощью TCP/IP.

Используется если размер кластера не превышает 100 нод.

В кластере Ignite узлы могут обнаруживать друг друга с помощью инструмента DiscoverySpi. Ignite предоставляет TcpDiscoverySpi в качестве реализации discoveryspi по умолчанию, которая использует TCP/IP для обнаружения узлов. SPI обнаружения может быть настроен для многоадресной рассылки и обнаружения узлов на основе статического IP-адреса.

Для использования механизма TCP/IP возможны две тонкие настройки:

Multicast IP Finder

Настройка TcpDiscoveryMulticastIpFinder использует многоадресную рассылку для обнаружения других узлов и является IP-искателем по умолчанию. В документации Apache Ignite подробно описано как настраивать Multicast IP Finder.

Static IP Finder

Статический IP-искатель, реализованный в TcpDiscoveryVmIpFinder, позволяет указать набор IP-адресов и портов, которые будут проверены на обнаружение узлов.
Необходимо только предоставить по крайней мере один IP-адрес удаленного узла, но обычно рекомендуется предоставить 2 или 3 адреса узлов, которые вы планируете запустить в будущем. Как только установлено соединение с любым из предоставленных IP-адресов, Ignite автоматически обнаруживает все остальные узлы.

Так возможно совместить две эти настройки: Multicast и Static.

Существует так же возможность запуска 2-х и более кластеров Ignite на одном наборе железа(node). Я это не рекомендую делать, но такую настройку можно использовать, когда ограничены в необходимом оборудовании или когда надо что-нибудь протестировать. Итого: использовать можно, но не стоит заморачиваться, чтобы не поймать необъяснимые баги.

Обнаружение с помощью ZooKeeper

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

Ну если вы имеете кластер более 100 нод, то вам эта статья конечно уже не нужна. Вы лучше меня умеете обеспечивать работоспособность кластера. Для понимания надо знать, что есть такой способ.

Обнаружение TCP/IP по умолчанию Ignite организует узлы кластера в кольцевую топологию, которая имеет преимущества и недостатки. Например, в топологиях с сотнями узлов кластера может потребоваться много секунд, чтобы системное сообщение прошло через все узлы. В результате базовая обработка событий, таких как присоединение новых узлов или обнаружение отказавших узлов, может занять некоторое время, что повлияет на общую скорость реагирования и производительность кластера.

ZooKeeper Discovery предназначен для массовых развертываний, которым необходимо сохранить простоту масштабирования и линейную производительность. Однако использование как Ignite, так и ZooKeeper требует настройки и управлении.

Для настройки необходимо настроить специальные параметры, которые не являются обязательными.

Требуются следующие параметры:

zkConnectionString - хранит список адресов серверов Zookeeper.

sessionTimeout - указывает время, по истечении которого узел воспламенения считается отключенным, если он не реагирует на события, которыми обмениваются через SPI обнаружения.​

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

Apache Ignite. Знакомство

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