Руководство по установке#
Термины и определения#
Термин/Аббревиатура |
Определение |
|---|---|
JDK |
Java Development Kit, комплект разработчика приложений на языке Java |
ОС |
Операционная система |
Системные требования#
Platform V DataGrid можно безопасно использовать при следующей конфигурации среды:
Требование |
Описание |
|---|---|
JDK |
Oracle JDK 8 и новее, Open JDK 8 и новее, IBM JDK 8 и новее |
ОС |
Linux (любой версии), macOS (10.6 и новее), Windows (XP и новее), Windows Server (2008 и новее), Oracle Solaris, z/OS |
Архитектура |
x86, x64, SPARC, PowerPC |
Сеть |
Ограничения отсутствуют (рекомендуется 10 Гбит/с) |
Специальных рекомендаций по настройкам безопасности окружения нет. Настройки окружения определяются внутренними политиками безопасности на стороне клиента.
Установка#
Platform V DataGrid имеет несколько вариантов установки:
установка из ZIP-архива;
установка с использованием Kubernetes:
В настоящем документе описывается только процесс установки из ZIP-архива. Другие варианты установки можно найти по вышеуказанным ссылкам на официальную документацию Apache Ignite.
Установка из ZIP-архива#
Для установки дистрибутива Platform V DataGrid выполните следующие действия:
Скачайте дистрибутив Ignite в виде ZIP-архива.
Распакуйте архив в папку установки в вашей системе.
Если необходимо, включите требуемые модули.
Если необходимо, настройте переменную среды
IGNITE_HOME, либо путь к папке установки (при использовании ОС Windows) и убедитесь, что в пути отсутствуют лишние символы/(или""для ОС Windows).
Дополнительные модули, входящие в поставку Platform V DataGrid#
Поставка Platform V DataGrid включает в себя модули, обеспечивающие определенную функциональность. Эти модули можно подключать отдельно по мере необходимости.
Все модули включены в дистрибутив, однако по умолчанию все они отключены (кроме модулей ignite-core, ignite-spring и ignite-indexing). Модули содержатся в директории lib/optional дистрибутива (каждый модуль каждый модуль располагается в отдельной субдиректории).
В зависимости от предполагаемого использования Platform V DataGrid модули можно подключить следующим способом:
При использовании бинарного дистрибутива переместите директорию
lib/optional/{module-dir}в директориюlibперед запуском узла.Добавьте библиотеки из
lib/optional/{module-dir}к пути класса вашего приложения.Добавьте модуль в качестве зависимости Maven в ваш проект.
Пример
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-log4j2</artifactId>
<version>${ignite.version}</version>
</dependency>
Следующие модули имеют LGPL-зависимости и, таким образом, не могут быть развернуты в центральном репозитории Maven:
ignite-hibernate;ignite-geospatial;ignite-schedule.
Для использования данных модулей соберите их и добавьте в ваш проект. Например, чтобы установить в вашем локальном репозитории модуль ignite-hibernate, запустите в исходном пакете Platform V DataGrid следующую команду:
mvn clean install -DskipTests -Plgpl -pl modules/hibernate -am
В поставке доступны следующие модули:
ArtifactId модуля |
Описание |
|---|---|
ignite-aop |
Модуль Ignite AOP предоставляет возможность добавить аннотацию @Gridify к любому Java-методу и преобразовать его в распределенное замкнутое выражение |
ignite-aws |
Обнаружение кластера на AWS S3 |
ignite-cassandra-serializers |
Модуль Ignite Cassandra Serializers предоставляет дополнительные сериализаторы для сохранения объектов в качестве BLOB в Cassandra. Модуль можно использовать в связке с модулем Ignite Cassandra Store |
ignite-cassandra-store |
Ignite Cassandra Store предоставляет реализацию CacheStore, которая поддерживается БД Cassandra |
ignite-cloud |
Ignite Cloud предоставляет реализации Apache jclouds для IP finder механизма TCP discovery |
ignite-direct-io |
Ignite Direct IO — это плагин, предоставляющий хранилище страниц с возможностью чтения и записи кеш-партиций в режиме O_DIRECT |
ignite-gce |
Ignite GCE обеспечивает работу реализаций IP finder для механизма TCP discovery, основанных на Google Cloud Storage |
ignite-indexing |
SQL-запросы и индексирование |
ignite-jcl |
Поддержка фреймворка Jakarta Common Logging (JCL) |
ignite-jta |
Интеграция транзакций Platform V DataGrid с JTA |
ignite-kafka |
Ignite Kafka Streamer предоставляет возможности для потоковой передачи данных из Kafka в кеши Platform V DataGrid |
ignite-kubernetes |
Модуль Ignite Kubernetes обеспечивает IP Finder для механизма TCP Discovery, использующий соответствующий сервис Kubernetes для поиска IP-адресов модулей Platform V DataGrid, упакованных в контейнер сервисом Kubernetes |
ignite-log4j |
Поддержка Log4j |
ignite-log4j2 |
Поддержка Log4j2 |
ignite-ml |
Ignite ML Grid предоставляет функциональность машинного обучения и релевантные структуры данных и методы линейной алгебры, включая on-heap и off-heap-данные, плотно и неплотно скомпонованные данные, локальные и распределенные реализации |
ignite-osgi |
Данный модуль содержит связующие компоненты для бесшовной работы Platform V DataGrid внутри OSGi-коннектора (например, Apache Karaf). |
ignite-osgi-karaf |
Данный модуль содержит специальный репозиторий обеспечивающий установку Platform V DataGrid в контейнер Apache Karaf |
ignite-osgi-paxlogging |
Данный модуль является OSGi-фрагментом, распаковывающим следующие пакеты из пакета Pax Logging API (фреймфорк логирования, используемый Apache Karaf): |
ignite-rest-http |
Ignite REST-HTTP запускает сервер, основанный на Jetty на узле. Этот сервер может использоваться для выполнения задач и/или кеш-команд в data grid с применением RESTful API, основанных на протоколе HTTP |
ignite-scalar |
Модуль Ignite Scalar предоставляет DSL, основанный на Scala с расширениями и краткими формами для Platform V DataGrid API |
ignite-scalar_2.10 |
Модуль Ignite Scalar, поддерживающий Scala 2.10 |
ignite-schedule |
Данный модуль обеспечивает функциональность планирования работ локально с использованием UNIX-синтаксиса, основанного на cron |
ignite-slf4j |
Поддержка фреймворка журналирования SLF4J |
ignite-spark |
Данный модуль предоставляет реализацию абстракции Spark RDD, обеспечивающую легкий доступ к кешам Platform V DataGrid |
ignite-spring-data |
Ignite Spring Data обеспечивает интеграцию с фреймворком Spring Data |
ignite-spring-data_2.0 |
Ignite Spring Data 2.0 обеспечивает интеграцию с фреймворком Spring Data 2.0 |
ignite-ssh |
Модуль Ignite SSH обеспечивает возможности запуска узлов Platform V DataGrid на удаленных компьютерах по протоколу SSH |
ignite-tensorflow |
Модуль интеграции Ignite TensorFlow позволяет использовать TensorFlow с Platform V DataGrid. При данном сценарии Platform V DataGrid будет являться источником данных для обучения любой модели TensorFlow |
ignite-urideploy |
Модуль Ignite URI Deploy обеспечивает возможности развертывания задач из различных источников, например, из файловой системы, HTTP, а также из электронной почты |
ignite-visor-console |
Open-source инструмент управления и мониторинга командной строки |
ignite-web |
Ignite Web позволяет запускать узлы внутри любого веб-контейнера, основанного на Java-сервлете и слушателе контекста Java-сервлета. Кроме того, данный модуль обеспечивает возможность сохранения веб-сессий в кеше Platform V DataGrid |
ignite-zookeeper |
Ignite ZooKeeper обеспечивает работу интерфейса TCP Discovery IP Finder, использующего директорию ZooKeeper для обнаружения других узлов Platform V DataGrid |
Установка и настройка кластера Platform V DataGrid#
Состояния кластера#
Кластер Platform V DataGrid может находиться в одном из трех состояний:
ACTIVE;ACTIVE_READ_ONLY;INACTIVE.
При первом запуске in-memory-кластера он находится в состоянии ACTIVE, а при первом запуске persistent-кластера –— в состоянии INACTIVE.
Описание состояний кластера#
INACTIVE— все операции запрещены;ACTIVE— нормальный режим работы кластера. Разрешено выполнение любых операций;ACTIVE_READ_ONLY— разрешено только чтение.
Активация кластера#
При первом запуске кластера его необходимо активировать.
Внимание
Активация требуется только при включенном native persistence.
Для активации кластера выполните следующую команду:
Linux
control.sh --set-state ACTIVEWindows
control.bat --set-state ACTIVE
После активации кластера базовая топология будет автоматически создана из набора текущих активных серверных узлов. Затем информация об узлах, входящих в базовую топологию, будет сохранена на диск.
Далее кластер, даже после его отключения и перезагрузки, будет активироваться автоматически сразу после запуска и подключения к кластеру всех узлов, входящих в базовую топологию.
Деактивация кластера#
Кластер также можно деактивировать. Деактивация кластера ведет к освобождению всех ресурсов памяти и удалению данных приложений на всех узлах кластера, а также — к отключению публичного API кластера.
Для деактивации кластера выполните следующую команду:
Linux
control.sh --set-state INACTIVE [--yes]Windows
control.bat --set-state INACTIVE [--yes]
Пример создания и настройки кластера Platform V DataGrid#
Рассмотрим пример создания и настройки кластера Platform V DataGrid, состоящего из двух узлов:
для демонстрации будет использоваться клиентский узел;
на серверных узлах будет включен режим persistence (данные в кешах не будут потеряны при отключении и повторном включении узлов);
для обнаружения узлов в примере будет использоваться механизм Static IP Discovery.
Используемая в примере конфигурация:
XML
<bean id="grid.cfg" class="org.apache.ignite.configurationIgniteConfiguration">
<property name="clientMode" value="false"/>
<!-- Включение Apache Ignite Persistent Store. -->
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="persistenceEnabled" value="true"/>
</bean>
</property>
</bean>
</property>
<property name="consistentId" value="myIgniteNode01"/>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<!-- Настройка имени кеша. -->
<property name="name" value="myReplicatedCache"/>
<!-- Настройка режима работы кеша. -->
<property name="cacheMode" value="REPLICATED"/>
<!-- Другие параметры конфигурации кеша. -->
</bean>
</list>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<!--
Явное указание адреса локального узла для его запуска и нормальной работы, даже если больше узлов в кластере нет. Опционально можно указать собственный порт или диапазон портов.
-->
<value>IP OF NODE01</value>
<value>IP OF NODE02</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
Для создания кластера из двух узлов выполните следующие действия:
Распакуйте ZIP-архив с бинарными файлами и поместите XML-файл конфигурации с заранее заданными IP-адресами ваших серверов в папку
ignite/config.Запустите узлы. После запуска в консоли появится примерно следующий вывод:
root@ignite01:~# ignite/bin/ignite.sh ignite/config/my-configxml [15:00:14] __________ ________________ [15:00:14] / _/ ___/ |/ / _/_ __/ __/ [15:00:14] _/ // (7 7 // / / / / _/ [15:00:14] /___/\___/_/|_/___/ /_/ /___/ [15:00:14] [15:00:14] ver. 2.8.1#20200521-sha1:86422096 [15:00:14] 2020 Copyright(C) Apache Software Foundation [15:00:14] [15:00:14] Ignite documentation: http://ignite.apache.org [15:00:14] [15:00:14] Quiet mode. [15:00:14] ^-- Logging to file '/root/ignite/apache-ignite-28.1-bin/work/log/ignite-c1e8c473.0.log' [15:00:14] ^-- Logging by 'JavaLogger [quiet=true,config=null]' [15:00:14] ^-- To see **FULL** console log here add-DIGNITE_QUIET=false or "-v" to ignite.{sh|bat} [15:00:14] OS: Linux 5.4.0-1020-kvm amd64 --- SOME SKIPPED WARNINGS ---- [15:00:45] Ignite node started OK (id=c1e8c473) [15:00:45] Topology snapshot [ver=118, locNode=c1e8c473,servers=2, clients=0, state=ACTIVE, CPUs=4, offheap=0.78GB,heap=0.87GB] [15:00:45] ^-- Baseline [id=0, size=2, online=2, offline=0]
Примечание
В случае возникновения проблем и необходимости получить более подробную информацию из журналов выполните команду
ignite.sh -v.
После запуска узлов и изменения топологии необходимо активировать кластер. Процесс активации автоматически создаст базовую топологию из всех серверных узлов со включенным persistence. Для активации выполните следующую команду:
root@ignite01:~# ignite/bin/control.sh --activate
Теперь можно подключаться к этому кластеру с клиентского узла, не задумываясь о том, какой из узлов сейчас подключен, а какой — нет.
Примечание
Необходимо дождаться, пока первый узел синхронизирует кеш с кластером, и только потом отключать второй, поскольку количество узлов, которые находятся в сети в базовой топологии — 2:
[15:34:39,988][INFO][main][GridDiscoveryManager] Topology snapshot [ver=1, locNode=16835415, servers=2, clients=0, state=ACTIVE, CPUs=16, offheap=6.4GB, heap=4.0GB] [15:34:39,988][INFO][main][GridDiscoveryManager] ^-- Baseline [id=0, size=2, online=2, offline=0]где
^--обозначает, что сообщение относится к сообщению строкой выше.
Настройки программного продукта, относящиеся к безопасности, находятся в документе «Руководство по безопасному использованию».
Обновление#
Информирование потребителей об обновлении Platform V DataGrid производится путем внутренней рассылки по банку. Других вариантов информирования потребителя об обновлении на данный момент не существует.
Подготовка к обновлению#
По умолчанию роль поддерживает обновление версий Platform V DataGrid с помощью полной переустановки всех библиотек, конфигураций и скриптов запуска.
Во время процесса переустановки или обновления Platform V DataGrid происходит удаление на серверах всех директорий описанных параметром ignite_se_rm_before_update_dirs:
# Defaults
ignite_se_rm_before_update_dirs:
- "{{ ignite_se_conf_dir }}" — директория содержит файлы конфигураций, keystore и credentials.xml
- "{{ ignite_se_bin_dir }}" — директория содержит исполняемые скрипты
- "{{ ignite_se_diag_dir }}" — директория содержит диагностическую информацию
- "{{ ignite_se_temp_dir }}" — директория содержит временные файлы
- "{{ ignite_se_libs_dir }}" — директория содержит библиотеки Platform V DataGrid
- "{{ ignite_se_user_libs_dir }}". — директория содержит пользовательские библиотеки Platform V DataGrid
Список каталогов, которые необходимо удалять возможно переопределить в inventory для конкретного стенда или проекта. Например, можно убрать из списка каталог с файлами конфигураций. В таком случае в этом каталоге будут обновлены все файлы, за исключением файлов авторизации.
В остальном, процедура обновления схожа с процедурой первичной установки:
подготовка каталогов установки;
заливка и установка дистрибутива;
установка / обновление файлов конфигурации;
подготовка окружения.
Внимание
При использовании persistence необходимо убедиться, что следующие каталоги с данными не попадают в список удаляемых:
ignite_se_wal_dir:
ignite_se_wal_archive_dir:
ignite_se_data_dir:
ignite_se_work_dir:
ignite_se_backup_dir:
Обновление#
Обновление заданием в Jenkins для пилотных проектов#
Запустите задачу со значением параметра JOB_ACTION deploy или deploy-and-start.
Выберите необходимую версию и запустите сборку:

Обновление Platform V DataGrid pipeline без выбора версии#
При обновлении без выбора версии путь к дистрибутиву вносится в inventory обновляемого узла или стенда.
Примечание
Версия роли
Ansible_role_ignite_seв ветке master привязана к актуальному на текущий момент релизу Platform V DataGrid. При запуске обновления из ветки с настройками версии по умолчанию всегда будет устанавливаться версия Platform V DataGrid последнего официально выпущенного релиза на момент установки обновления.
Проверка работоспособности#
В Platform V DataGrid предусмотрен следующий алгоритм проверки работоспособности:
проверить журналы на отсутствие ошибок;
выполнить команду:
./control.sh --baseline;в выводе убедиться, что кластер активен и содержит все узлы.
Запуск кластера для проверки работоспособности#
Для проверки работоспособности на каждом из узлов кластера установите корректное значение переменной
$IGNITE_HOME. Пример:export IGNITE_HOME=“/ditmsk/apps/ignite/server/“.Запустите кластер. На каждом из узлов кластера выполните команду:
${IGNITE_PATH}/bin/ignite.sh ${IGNITE_PATH}/config/gostech-test-config.xml >> ${IGNITE_PATH}/logs/console.log 2>&1 &Дождитесь запуска кластера (обычно это занимает несколько секунд). Для проверки на каждом узле кластера выполните команду:
grep -F "Topology snapshot [ver=" ${IGNITE_PATH}/logs/*.logАктивируйте кластер. Необходимо запустить активацию на первом из запущенных узлов. Для этого выполните команду:
/bin/bash ${IGNITE_PATH}/bin/control.sh --activate`Проверьте доступность кластера. Для этого выполните команду:
/bin/bash ${IGNITE_PATH}/bin/control.sh –-baselineВ результате выполненных действий в отчете в консоли появится информация о статусе всех узлов. Версия топологии должна соответствовать количеству узлов в кластере.
Проверьте работоспособность тонкого клиента прослушиванием порта 10800. Для этого выполните команду:
sudo netstat -apn|lessВы получите примерно следующий вывод:
tcp 0 0 0.0.0.0:10800 0.0.0.0:* LISTEN 113376/java
Откат#
Обратная совместимость в Platform V Data Grid не поддерживается.
Поэтому, в режиме Persistence производится развертывание предыдущей версии Platform V Data Grid с восстановлением данных из снепшота.
В случае использования Platform V Data Grid в качестве in-memory data grid (IMDG) происходит установка предыдущей версии.
Часто встречающиеся проблемы и пути их устранения#
Обработка критических ошибок#
В Platform V DataGrid реализован расширяемый механизм обработки критических ошибок, позволяющий определить единую стратегию обработки ошибок на уровне узла.
При возникновении критической ошибки она передается в специальный класс (обработчик ошибок), который выполняет определенные действия, например, останавливает виртуальную машину, в которой запущен узел, или перезапускает узел.
Критическая ошибка — это ошибка, которая приводит или может привести к неработоспособности всего кластера. К критическим ошибкам относятся следующие типы ошибок:
критические системные ошибки (например,
OutOfMemory);ошибка чтения/записи на устройство хранения;
непреднамеренное завершение работы критических системных потоков.
Принцип работы#
Обработчик ошибок представляет собой реализацию интерфейса FailureHandler, имеющего единственный метод onFailure(ignite,errorContext). Критические ошибки выявляются на уровне потока исполнения узла и обрабатываются в соответствии со стратегией, реализованной в методе onFailure.
Стандартные обработчики ошибок#
В Platform V DataGrid доступны следующие обработчики ошибок:
Обработчик |
Описание |
|---|---|
|
Останавливает узел, в котором произошла ошибка. При этом JVM продолжает работать. Данный обработчик полезен в случае, когда требуется остановить только узел и не останавливать виртуальную машину, в которой этот узел запущен |
|
Пытается остановить узел кластера (если параметр tryStop равен true). Если узел не удается остановить в течение указанного периода времени, обработчик завершает работу виртуальной машины. Данный обработчик используется по умолчанию. Параметры: tryStop — если равен true, обработчик сначала пытается остановить узел; если остановить не удается, обработчик завершает процесс JVM. timeout — период времени в миллисекундах, в течение которого обработчик ожидает останов узла |
|
Перезапускает виртуальную машину JVM, в которой запущен узел кластера. Данный обработчик можно использовать, только если узел запускается с помощью скриптов запуска из командной строки |
|
Игнорирует любые ошибки. Данный обработчик может быть полезен при тестировании |
Настройка обработчика ошибок#
Обработчик ошибок указывается через свойство failureHandler объекта IgniteConfiguration. В конфигурационном файле указывается полное название класса обработчика ошибок (включая название пакета).
Ниже приведен пример конфигурации, в которой в качестве обработчика ошибок используется RestartProcessFailureHandler:
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="failureHandler">
<bean class="org.apache.ignite.failure.RestartProcessFailureHandler"/>
</property>
</bean>
Типовых часто встречающихся ошибок встречено не было.
Чек-лист валидации установки#
Раздел предусмотрен для будущих обновлений.