Apache Ignite. Установка и настройка
Экспериментальная функция
Представленная здесь функция находится на стадии разработки. См. «Поддержка экспериментальных функций».
Введение
Apache Ignite — это распределенная высокопроизводительная система управления базами данных.
Comindware Platform использует Apache Ignite для хранения данных.
Apache Ignite в минимально необходимой конфигурации устанавливается автоматически при установке Comindware Platform.
Прикладная задача
Внимание!
Данная инструкция не требуется для базовых сценариев развёртывания Comindware Platform.
Используйте эту инструкцию, только если вам необходимо развернуть Apache Ignite в особой нетипичной конфигурации.
Для продвинутых конфигураций можно развернуть собственный экземпляр Apache Ignite или использовать имеющуюся в вашей организации службу.
Например, можно развернуть кластер Apache Ignite из нескольких узлов, если это необходимо для вашего бизнеса.
Здесь представлены краткие инструкции по установке и настройке Apache Ignite 2.17.0 в ОС Linux для работы с Comindware Platform в простейшей конфигурации.
Вам может потребоваться адаптировать конфигурацию Apache Ignite в соответствии со своими бизнес-потребностями.
Полное официальное руководство по Apache Ignite 2 (на английском языке) представлено на сайте: https://ignite.apache.org/docs/ignite2/latest/
Краткое руководство на русском языке представлено на сайте: https://platformv.sbertech.ru/docs/public/IGN/17.6.0/index.html
Установка Apache Ignite
- Скачайте, распакуйте и установите Apache Ignite и задайте права:
wget https://downloads.apache.org/ignite/2.17.0/apache-ignite-2.17.0-bin.zipunzip -q apache-ignite-2.17.0-bin.zipmv apache-ignite-2.17.0-bin /usr/share/ignitechown -R www-data:www-data /usr/share/ignite - Установите переменную среды
IGNITE_HOME, указав путь к папке Ignite без завершающего символа/:export IGNITE_HOME=/usr/share/ignite - Дополнительные модули для использования Ignite в сочетании с Comindware Platform не требуются.
- Скопируйте в папку
/usr/share/igniteфайлIgnite.configиз папки/var/www/<instanceName>(где<instanceName>— имя экземпляра ПО). - Пример файла
Ignite.configпредставлен в параграфе «Пример файла конфигурации Ignite». - Откройте для редактирования скрипт запуска Ignite
ignite.sh:cd /usr/share/ignite/bin/nano ignite.sh - Добавьте в начало скрипта
ignite.shследующие строки:export "JVM_OPTS=-Xms512m -Xmx4g -XX:MaxDirectMemorySize=1g -Djava.net.preferIPv4Stack=true -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC -XX:MinHeapFreeRatio=1 -XX:MaxHeapFreeRatio=10 -DIGNITE_QUIET=false -DIGNITE_NO_ASCII=true--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED"export IGNITE_WORK_DIR=/var/lib/comindware/<instanceName>/Databaseexport DEFAULT_CONFIG=/usr/share/ignite/config/Ignite.config -
Откройте для редактирования скрипт
control.sh:9. Добавьте в скриптnano control.shcontrol.shследующие строки:10. Создайте и откройте для редактирования скриптDEFAULT_CONFIG=config/Ignite.configignite_service_create.sh. Этот скрипт будет создавать и запускать службу Apache Ignite:11. Введите в скриптnano ignite_service_create.shignite_service_create.shследующие директивы:12. Инициализируйте и запустите службу Apache Ignite с помощью скрипта#!/bin/bash# create apache ignite daemon service# ver 0.1#sudo cat <<EOF >/lib/systemd/system/ignite.service[Unit]Description=Apache Ignite ServiceAfter=network.target[Service]WorkingDirectory=/usr/share/igniteUser=www-dataGroup=www-dataPrivateDevices=yesProtectSystem=fullType=simpleExecReload=/bin/kill -HUP $MAINPIDKillMode=mixedKillSignal=SIGTERMTimeoutStopSec=10ExecStart=/usr/share/ignite/bin/ignite.shSyslogIdentifier=IgniteRestart=on-failureRestartSec=5s[Install]WantedBy=multi-user.targetAlias=ignite.serviceEOFsystemctl daemon-reloadsystemctl enable ignite.serviceignite_service_create.sh:bash ignite_service_create.sh
Запуск Apache Ignite
- Запустите службу Apache Ignite:
systemctl start ignite - Проверьте статус узла Apache Ignite:
cd /usr/share/ignite/bin/bash control.sh --baseline
Пример файла конфигурации Ignite
Для стабильной работы Ignite вместе с Comindware Platform важны следующие директивы в данном примере:
<igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" gridName="myGrid1">— в параметреgridNameукажите имя сервера узла Ignite. У узлов кластера должно быть одинаковое имя сервера.<discoverySpi type="TcpDiscoverySpi"><ipFinder type="TcpDiscoveryStaticIpFinder"><endpoints> <string>127.0.0.1</string></endpoints></ipFinder></discoverySpi>— в параметреTcpDiscoveryStaticIpFinderукажите адрес сервера.<dataRegionConfigurations type="DataRegionConfiguration"> <dataRegionConfiguration><name>Persistent</name><persistenceEnabled>true</persistenceEnabled>— в директивеdataRegionConfigurationукажите<persistenceEnabled>true</persistenceEnabled>.<workDirectory>/var/lib/ignite/</workDirectory>>— укажите рабочую папку Ignite.<igniteinstanceName>Comindware_Instance2</igniteinstanceName>— укажите имя экземпляра Ignite.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="igniteConfiguration" type="Apache.Ignite.Core.IgniteConfigurationSection, Apache.Ignite.Core" />
</configSections>
<runtime>
<gcServer enabled="true"/>
</runtime>
<igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" gridName="myGrid1">
<localhost></localhost>
<networkTimeout>1000</networkTimeout>
<networkSendRetryDelay>1000</networkSendRetryDelay>
<jvmOptions>
<string>-Xms512m</string>
<string>-Xmx3g</string>
<string>--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED</string>
<string>--add-exports=java.base/sun.nio.ch=ALL-UNNAMED</string>
<string>--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED</string>
<string>--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED</string>
<string>--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED</string>
<string>--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED</string>
<string>-Djava.net.preferIPv4Stack=true</string>
<string>--illegal-access=warn</string>
</jvmOptions>
<discoverySpi type="TcpDiscoverySpi">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1</string>
</endpoints>
</ipFinder>
</discoverySpi>
<atomicConfiguration type="AtomicConfiguration">
<atomicSequenceReserveSize>1000</atomicSequenceReserveSize>
<cacheMode>Partitioned</cacheMode>
<backups>1</backups>
</atomicConfiguration>
<dataStorageConfiguration type="DataStorageConfiguration">
<walPath>wal/</walPath>
<walArchivePath>wal/</walArchivePath>
<defaultDataRegionConfiguration type="DataRegionConfiguration">
<name>Default_Region</name>
<persistenceEnabled>false</persistenceEnabled>
<initialSize>10485760</initialSize>
<maxSize>20971520</maxSize>
</defaultDataRegionConfiguration>
<dataRegionConfigurations type="DataRegionConfiguration">
<dataRegionConfiguration>
<name>Persistent</name>
<persistenceEnabled>true</persistenceEnabled>
<initialSize>10485760</initialSize>
<maxSize>1147483648</maxSize>
<pageEvictionMode>RandomLru</pageEvictionMode>
</dataRegionConfiguration>
<dataRegionConfiguration>
<name>InMemory</name>
<persistenceEnabled>false</persistenceEnabled>
<initialSize>10485760</initialSize>
<maxSize>50485760</maxSize>
</dataRegionConfiguration>
</dataRegionConfigurations>
</dataStorageConfiguration>
<clientMode>false</clientMode>
<includedEventTypes></includedEventTypes>
<workDirectory>/var/lib/ignite/</workDirectory>
<jvmDllPath></jvmDllPath>
<igniteinstanceName>Comindware_Instance2</igniteinstanceName>
<autoGenerateIgniteinstanceName>false</autoGenerateIgniteinstanceName>
</igniteConfiguration>
</configuration>
Эта статья была полезна 1 чел.