Руководство по установке#

Термины и определения#

Термин/Аббревиатура

Определение

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-архива. Другие варианты установки можно найти по вышеуказанным ссылкам на официальную документацию Apache Ignite.

Установка из ZIP-архива#

Для установки дистрибутива Platform V DataGrid выполните следующие действия:

  1. Скачайте дистрибутив Ignite в виде ZIP-архива.

  2. Распакуйте архив в папку установки в вашей системе.

  3. Если необходимо, включите требуемые модули.

  4. Если необходимо, настройте переменную среды IGNITE_HOME, либо путь к папке установки (при использовании ОС Windows) и убедитесь, что в пути отсутствуют лишние символы / (или "" для ОС Windows).

Дополнительные модули, входящие в поставку Platform V DataGrid#

Поставка Platform V DataGrid включает в себя модули, обеспечивающие определенную функциональность. Эти модули можно подключать отдельно по мере необходимости.

Все модули включены в дистрибутив, однако по умолчанию все они отключены (кроме модулей ignite-core, ignite-spring и ignite-indexing). Модули содержатся в директории lib/optional дистрибутива (каждый модуль каждый модуль располагается в отдельной субдиректории).

В зависимости от предполагаемого использования Platform V DataGrid модули можно подключить следующим способом:

  1. При использовании бинарного дистрибутива переместите директорию lib/optional/{module-dir} в директорию lib перед запуском узла.

  2. Добавьте библиотеки из lib/optional/{module-dir} к пути класса вашего приложения.

  3. Добавьте модуль в качестве зависимости 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): org.apache.log4j.varia, org.apache.log4j.xml. Эти пакеты необходимы при установке комплекта ignite-log4j и не распаковываются Pax Logging API по умолчанию

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 ACTIVE
    
  • Windows

    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>

Для создания кластера из двух узлов выполните следующие действия:

  1. Распакуйте ZIP-архив с бинарными файлами и поместите XML-файл конфигурации с заранее заданными IP-адресами ваших серверов в папку ignite/config.

  2. Запустите узлы. После запуска в консоли появится примерно следующий вывод:

    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.

  1. После запуска узлов и изменения топологии необходимо активировать кластер. Процесс активации автоматически создаст базовую топологию из всех серверных узлов со включенным 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.

Выберите необходимую версию и запустите сборку:

update

Обновление Platform V DataGrid pipeline без выбора версии#

При обновлении без выбора версии путь к дистрибутиву вносится в inventory обновляемого узла или стенда.

Примечание

Версия роли Ansible_role_ignite_se в ветке master привязана к актуальному на текущий момент релизу Platform V DataGrid. При запуске обновления из ветки с настройками версии по умолчанию всегда будет устанавливаться версия Platform V DataGrid последнего официально выпущенного релиза на момент установки обновления.

Проверка работоспособности#

В Platform V DataGrid предусмотрен следующий алгоритм проверки работоспособности:

  • проверить журналы на отсутствие ошибок;

  • выполнить команду: ./control.sh --baseline;

  • в выводе убедиться, что кластер активен и содержит все узлы.

Запуск кластера для проверки работоспособности#

  1. Для проверки работоспособности на каждом из узлов кластера установите корректное значение переменной $IGNITE_HOME. Пример: export IGNITE_HOME=“/ditmsk/apps/ignite/server/“.

  2. Запустите кластер. На каждом из узлов кластера выполните команду:

    ${IGNITE_PATH}/bin/ignite.sh ${IGNITE_PATH}/config/gostech-test-config.xml >> ${IGNITE_PATH}/logs/console.log 2>&1 &
    
  3. Дождитесь запуска кластера (обычно это занимает несколько секунд). Для проверки на каждом узле кластера выполните команду:

    grep -F "Topology snapshot [ver=" ${IGNITE_PATH}/logs/*.log
    
  4. Активируйте кластер. Необходимо запустить активацию на первом из запущенных узлов. Для этого выполните команду:

    /bin/bash ${IGNITE_PATH}/bin/control.sh --activate`
    
  5. Проверьте доступность кластера. Для этого выполните команду:

    /bin/bash ${IGNITE_PATH}/bin/control.sh –-baseline
    

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

  6. Проверьте работоспособность тонкого клиента прослушиванием порта 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 доступны следующие обработчики ошибок:

Обработчик

Описание

StopNodeFailureHandler

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

StopNodeOrHaltFailureHandler

Пытается остановить узел кластера (если параметр tryStop равен true). Если узел не удается остановить в течение указанного периода времени, обработчик завершает работу виртуальной машины. Данный обработчик используется по умолчанию. Параметры: tryStop — если равен true, обработчик сначала пытается остановить узел; если остановить не удается, обработчик завершает процесс JVM. timeout — период времени в миллисекундах, в течение которого обработчик ожидает останов узла

RestartProcessFailureHandler

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

NoOpFailureHandler

Игнорирует любые ошибки. Данный обработчик может быть полезен при тестировании

Настройка обработчика ошибок#

Обработчик ошибок указывается через свойство failureHandler объекта IgniteConfiguration. В конфигурационном файле указывается полное название класса обработчика ошибок (включая название пакета).
Ниже приведен пример конфигурации, в которой в качестве обработчика ошибок используется RestartProcessFailureHandler:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="failureHandler">
<bean class="org.apache.ignite.failure.RestartProcessFailureHandler"/>
</property>
</bean>

Типовых часто встречающихся ошибок встречено не было.

Чек-лист валидации установки#

Раздел предусмотрен для будущих обновлений.