Настройка программы =================== Настройка на состав технических средств --------------------------------------- Общие требования ~~~~~~~~~~~~~~~~ Предъявляются следующие общие обязательные требования: 1. созданы все виртуальные машины согласно схеме развертывания; 2. операционная система на базе Linux (kernel 3.10 и yum/rpm). В данном документе описание на примере CentOS 7.8; 3. организован доступ к пользователю root/технологическому пользователю с правами ``sudo`` на серверах; 4. имена хостов (FQDN) серверов могут взаимно получать IP по имени со всех машин; 5. на всех серверах установлены пакеты: - «Python 2» (version 2.7); - «libselinux-python». 6. на всех серверах установлен сервис синхронизации времени; 7. хранилище «centos-extras» включено; 8. в случае работы с RHEL/CentOS 7.8 со всех машин в кластере обеспечен доступ к официальному репозиторию «CentOS Extras» (например, http://centos-mirror.rbc.ru/pub/centos/7/extras/x86_64/ или создано локальное зеркало); 9. в случае работы с RHEL/CentOS 7.8 со всех машин в кластере обеспечен доступ к официальному репозиторию «CentOS Updates» (например, http://centos-mirror.rbc.ru/pub/centos/7/updates/x86_64/ или создано локальное зеркало); 10. в случае работы с RHEL/CentOS 7.8 со всех машин в кластере обеспечен доступ к официальному репозиторию «CentOS Base» (например, http://centos-mirror.rbc.ru/pub/centos/7/os/x86_64/ или создано локальное зеркало). 11. смонтирован диск большого объема (выделенный под данные) на тех серверах, для которых требуется большой объем данных. По умолчанию диск монтируется в ``/opt``. Общие требования для развертывания ProStore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. наличие одной или нескольких выделенных и обособленных одноранговых Interconnect-сетей под цели внутренней коммуникации кластера; 2. все сервера кластера должны быть подключены к Interconnect-сетям, для серверов должны быть назначены адреса, и должно быть настроено соединение между всеми серверами кластера; 3. скорость Ethernet от 1 Гб/с (стандартом является 10 Гб/с); 4. отсутствие firewalls и другого ПО, блокирующего или замедляющего трафик; 5. внутри кластера должна быть открыта коммуникация по всем портам; 6. доступность проверки целостности и качества соединений (Ping) для всех серверов (ICMP); 7. сервисы firewalld и SELinux не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки ADS, ADB и ADQM для остановки и выключения; 8. создание новых сервисов не должно контролироваться системой управления конфигурации (при ее наличии), поскольку оно должно быть доступно процессу установки ADS, ADB и ADQM. При установке с подключением к сети Интернет предъявляются дополнительные требования: 1. наличие доступа для серверов ADS и ADB к ПО ADCM, предварительно развернутому в сети организации на выделенном сервере; 2. наличие доступа для серверов ADB к следующим официальным репозиториям Arenadata или созданным локальным зеркалам: - ADB: https://downloads.arenadata.io/ADB//centos/7/community/$basearch; - Arenadata Monitoring: https://downloads.arenadata.io/ADM//centos/7/community/$basearch/. 3. наличие доступа для серверов кластера ADQM к следующим официальным репозиториям Arenadata или созданным локальным зеркалам: - https://storage.googleapis.com/arenadata-repo/ADM/; - https://storage.googleapis.com/arenadata-repo/ADQM/; - https://storage.googleapis.com/arenadata-repo/ADS. 2. наличие доступа для серверов кластера ADG к официальному репозиторию Arenadata ADG или созданному локальному зеркалу; 3. наличие доступа для сервера :term:`ProStore` к официальному репозиторию Arenadata :term:`ProStore` или созданному локальному зеркалу. Требования к серверу ProStore ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Необходимо не менее 20ГБ свободного пространства. Требования к серверу «Менеджер кластера ADCM» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Требуется виртуальная или физическая машина с операционной системой на базе Linux (kernel 3.10 и yum/rpm). В данном документе описание на примере CentOS 7.8; Необходимо не менее 5 ГБ свободного пространства в директории ``/home``.  Требования к кластеру серверов «ADQM» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. снаружи кластер должен быть доступен по следующим портам: - 22 (ssh); - 8123 (HTTP-интерфейс Clickhouse); - 8000 (ADCM). 3. Clickhouse-cервера должны быть доступны по портам 9000, 8123, 9009 внутри кластера; 4. для отправки метрик на сервер мониторинга к нему должно быть разрешено подключение серверов кластера (по умолчанию 2015/tcp, 2016/udp); 5. для отправки статусов компонентов кластера в ADCM к нему должно быть разрешено подключение серверов кластера (по умолчанию порт 8000). Требования к кластеру серверов «ADS» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол NTP; 2. следующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/hosts`` - ``/etc/selinux/config`` - ``/etc/sysctl.conf`` - файлы директории ``/usr/lib/systemd/system/``; 3. в кластерe должны быть открыты порты, представленные в таблице ниже (см. :numref:`tab_gost_6`). .. _tab_gost_6: .. table:: Перечень сетевых портов, используемых серверами ADS +-------------+-------------------------------------------------------+ | Номер порта | Описание использования порта | +=============+=======================================================+ | 22 | SSH | +-------------+-------------------------------------------------------+ | 81 | (при установке ADS без подключения к сети Интернет) | | | TCP-порт репозиториев Arenadata Enterprise Tools | +-------------+-------------------------------------------------------+ | 2015 | TCP-порт для отправки метрик на сервер мониторинга | +-------------+-------------------------------------------------------+ | 2016 | Udp-порт для отправки метрик на сервер мониторинга | +-------------+-------------------------------------------------------+ | 8000 | TCP-порт для отправки статусов компонентов кластера в | | | ADCM | +-------------+-------------------------------------------------------+ | 2181 | Порт доступа к сервису ZooKeeper | +-------------+-------------------------------------------------------+ | 2888 | Порт межсерверного взаимодействия для компонентов | | | кворума ZooKeeper | +-------------+-------------------------------------------------------+ | 3888 | Порт межсерверного взаимодествия для компонентов | | | кворума ZooKeeper | +-------------+-------------------------------------------------------+ | 9092 | HTTP-порт доступа к сервису Kafka | +-------------+-------------------------------------------------------+ | 9093 | HTTPS-порт доступа к сервису Kafka | +-------------+-------------------------------------------------------+ | 8081 | Порт доступа к сервису Schema-Registry | +-------------+-------------------------------------------------------+ | 8082 | Порт доступа к сервису Kafka REST Proxy | +-------------+-------------------------------------------------------+ | 8088 | Порт доступа к компоненту KSQL Server | +-------------+-------------------------------------------------------+ | 9898 | Порт доступа к сервису Kafka-Manager | +-------------+-------------------------------------------------------+ | 9997 | JMX-порт для доступа к метрикам сервисa | | | Schema-Registry | +-------------+-------------------------------------------------------+ | 9998 | JMX-порт для доступа к метрикам сервисa Kafka REST | | | Proxy | +-------------+-------------------------------------------------------+ | 9999 | JMX-порт для доступа к метрикам сервиса Kafka | +-------------+-------------------------------------------------------+ Требования к кластеру серверов «ADB» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Снаружи кластер должен быть доступен по следующим портам: - 22 (ssh); - 5432 (входящий интерфейс postgresql); 2. для доступа к серверам точного времени для мастер-серверов должен быть открыт доступ по порту 123/udp; 3. для отправки метрик на сервер мониторинга к нему должно быть разрешено подключение серверов кластера (по умолчанию 2015/tcp, 2016/udp); 4. для отправки статусов компонентов кластера в ADCM к нему должно быть разрешено подключение серверов кластера (по умолчанию порт 8000/tcp); 5. следующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/fstab``; - ``/etc/hosts``; - ``/etc/hostname``; - ``/etc/chrony.conf``; - ``/etc/ssh/sshd_config``; - ``/etc/selinux/config``; - ``/etc/security/limits.conf``; - файлы директории ``/usr/lib/systemd/system/``; - файлы директории ``/etc/cgconfig.d/``. Требования к кластеру серверов «ADG» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. для отправки метрик на сервер мониторинга к нему должно быть разрешено подключение серверов кластера (по умолчанию 2015/tcp, 2016/udp); 2. снаружи кластер должен быть доступен по порту 22 (ssh); 3. наличие библиотеки glibc версии 2.17-260.el7_6.6 или выше. Требования к серверу «СМЭВ3 коннектор» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол NTP; 2. следующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/hosts``; - ``/etc/selinux/config``; - ``/etc/sysctl.conf``; - ``/usr/lib/systemd/system/``; - ``/etc/sysconfig/iptables\*``; - ``/etc/firewalld/\*``; - ``/etc/docker/\*``. 3. Снаружи сервер должен быть доступен по следующим портам: - 22 (ssh); 4. Необходим сетевой доступ до сервера СМЭВ. Например, если используется адрес http://smev3-n0.test.gosuslugi.ru:5000/transport_1_0_2/, необходимо организовать доступ 5. Если для шифрования и подписи сообщений используется КриптоПро JCP 2.0.41618. 6. Необходимо так же подготовить ключи (контейнер) для КриптоПро и лицензию на JCP. В случае отсутствия лицензии будет использоваться пробная лицензия. 7. Если для оформления цифровой подписи используется VipNet PKI необходимо обеспечить сетевой доступ до его сервера. Требования к серверу «Агент ПОДД» ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол NTP. 2. Следующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/hosts``; - ``/etc/selinux/config``; - ``/etc/sysctl.conf``; - ``/usr/lib/systemd/system/``; - ``/etc/sysconfig/iptables\*``; - ``/etc/firewalld/\*``; - ``/etc/docker/\*``. 3. Снаружи сервер должен быть доступен по следующим портам: - 22 (ssh); 4. Необходим сетевой доступ до сервера :term:`ПОДД`. Например, если используется адрес http://smev3-n0.test.gosuslugi.ru:5000/transport_1_0_2/, необходимо организовать доступ до хоста smev3-n0.test.gosuslugi.ru по порту 5000. Требования к серверу «ETL» ~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол NTP; 2. Следующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/hosts``; - ``/etc/selinux/config``; - ``/etc/sysctl.conf``; - ``/usr/lib/systemd/system/``; - ``/etc/sysconfig/iptables\*``; - ``/etc/firewalld/\*``; - ``/etc/docker/\*``. 3. Должны быть открыты порты, представленные в таблице ниже (см. :numref:`tab_gost_7`). .. _tab_gost_7: .. table:: Перечень сетевых портов, используемых серверами ETL +-------------+-------------------------------------------------------+ | Номер порта | Описание использования порта | +=============+=======================================================+ | 22 | SSH | +-------------+-------------------------------------------------------+ | 8080 | TCP-порт, WEB - интерфейс для Apache Spark master | +-------------+-------------------------------------------------------+ | 6066 | TCP-порт, отправка задач в кластер через rest api для | | | Apache Spark master | +-------------+-------------------------------------------------------+ | 7077 | TCP-порт, отправка задач в кластер регистрация | | | исполнителей Apache Spark worker для spark master | +-------------+-------------------------------------------------------+ | 8081 | TCP-порт, WEB-интерфейс Apache Spark worker | +-------------+-------------------------------------------------------+ | 8080 | TCP-порт, WEB – интерфейс Apache Airflow | +-------------+-------------------------------------------------------+ | 5555 | TCP-порт, мониторинг задач Apache Airflow | +-------------+-------------------------------------------------------+ | 5432 | TCP-порт, Airflow Postgres для хранения метаданных | +-------------+-------------------------------------------------------+ | 6379 | TCP-порт, Redis для хранения очередей | +-------------+-------------------------------------------------------+ Требования к серверу конечных точек ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На серверах должен быть настроен протокол :term:`NTP`; 2. следующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/hosts``; - ``/etc/selinux/config``; - ``/etc/sysctl.conf``; - файлы директории ``/usr/lib/systemd/system/``; - ``/etc/sysconfig/iptables\*``; - ``/etc/firewalld/\*``; - ``/etc/docker/\*``. 3. Снаружи сервер должен быть доступен по следующим портам: * 22 (ssh) * 8080 Настройка на состав программных средств --------------------------------------- Установка витрины данных производится без необходимости доступа к сети «Интернет» для скачивания компонент. Создание технологического пользователя ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для корректной работы в процессе установки программного обеспечения необходимо: 1. Создать технологического пользователя с правами «sudo» на всех серверах. 2. Выдать технологическому пользователю на всех серверах право выполнять через «sudo» команды от имени пользователей ``root`` и ``gpadmin``. 3. Выдать технологическому пользователю право без пароля использовать «sudo». Если такой возможности нет, необходимо создать одинаковый пароль. В этом случае при запуске ``ansible-playbook ``необходимо будет указать ключ ``-K`` и задавать пароль пользователя для использования ``sudo``. 4. На сервере ADCM сгенерировать пару закрытого и открытого ключа для данного пользователя. 5. Разместить на остальных серверах открытый ключ Установка Менеджера кластера ADCM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Сервер «Менеджер Кластера» – сервер, с которого будет централизованно производиться установка почти всех компонентов витрины. Данный компонент обязателен для установки. ADCM – программное обеспечение, распространяемое в виде образа докеров. У вас должен быть Докер или совместимый движок контейнеров, чтобы запустить ADCM. Текущая версия программного обеспечения не совместима с SELinux. Подробная инструкция по установке Менеджера кластера ADCM приведена в документации к ПО Менеджера кластера ADCM (https://docs.arenadata.io/adcm/user/install.html ). Список основных объектов ADCM приведен в приложении 1. Таблица 8 – Основные объекты ADCM Установка ПО ADCM осуществляется технологическим пользователем согласно следующим этапам: 1. Выключить ``selinux``. В файле ``/etc/selinux/config`` установить значение ``SELINUX=disabled``, перезапустить сервер командой ``reboot now`` 2. Установить докер согласно его документации, спользуйте следующие команды:: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y containerd.io yum install -y docker-ce-3:18.09.1-3.el7 systemctl enable docker systemctl start docker 3. Установить ПО ADCM в докере командами:: docker pull arenadata/adcm:latest docker create --name adcm -p 8000:8000 -v /opt/adcm:/adcm/data arenadata/adcm:latest 4. Запустить ADCM командой:: docker start adcm 5. Открыть браузер и перейти по адресу http: // : Пользователь по умолчанию - ``admin``, пароль - ``admin``. Установка ADQM ~~~~~~~~~~~~~~ Подробная инструкция по установке СУБД ADQM приведена в документации к СУБД ADQM и СУБД ClickHouse (https://docs.arenadata.io/adqm/install/adcm/ru/index.html , https://clickhouse.tech/docs/ru/getting-started/install/ ). 1. Создать не менее трёх виртуальных машин для кластера ClickHouse (используйте *гипервизор* (монитор виртуальных машин)). 2. Установить ClickHouse на каждом узле кластера под профилем пользователя ``root`` с помощью команд: :: rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 yum install -y clickhouse-server-20.4.4.18-2 clickhouse-client-20.4.4.18-2 1. Запустить сервер следующей командой:: systemctl start clickhouse-server 2. Выполнить настройку среды - В конфигурационный файл каждого сервера ClickHouse, размещенным по относительному пути /etc/clickhouse-server/config.xml, внести описание конфигурации кластера ClickHouse и Zookeeper в следующем формате (на примере конфигурации ClickHouse из одного шарда и двух реплик): .. code-block:: xml                                                                bdv-adqm-1.ru-central1.internal                     9000                                                                                 bdv-adqm-2.ru-central1.internal                     9000                                             Пример конфигурации ClickHouse из двух шардов и двух реплик: .. code-block:: xml                                                                          bdv-adqm-1.ru-central1.internal                     9000                                                       bdv-adqm-2.ru-central1.internal                     9000                                                                                 bdv-adqm-3.ru-central1.internal                     9000                                                       bdv-adqm-4.ru-central1.internal                     9000                                                 Пример указания кластера *Zookeeper* из трёх нод: .. code-block:: xml bdv-zookeeper-1.ru-central1.internal 2181 bdv-zookeeper-2.ru-central1.internal 2181 bdv-zookeeper-3.ru-central1.internal 2181 30000 - Открыть доступ для удалённого подключения путём внесения в конфигурационный файл адресов, с которых возможно подключение. Например, доступ с любого адреса (IPv4, IPv6): .. code-block:: xml      ::  - Перезапуск СУБД командой:: systemctl restart clickhouse-server 1. Проверить успешность завершения установки СУБД ADQM: - Проверить логи СУБД ADQM по относительному пути: ``/var/log/clickhouse-server/`` - Проверить удалённое подключение с помощью http-запроса:: curl 'http://10.92.3.13:8123/ping' - Проверить работу СУБД ADQM работает в кластерном режиме, путём запуска клиента командной строки ClickHouse, создания тестовой таблицы SQL-запросом через клиента:: $ clickhouse-client CREATE DATABASE test1 ON CLUSTER <имя_кластера> Результатом выполнение команды будет сообщения об успешном выполнении запроса Настройка ПО ADQM ~~~~~~~~~~~~~~~~~ Инструкция по настройке СУБД ADQM приведена в официальной документации к СУБД ADQM и СУБД Clickhouse (https://docs.arenadata.io/adqm/expand/adcm/ru/index.html , https://clickhouse.tech/docs/ru/operations/configuration-files/ ). Установка Диспетчера сообщений ADS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПО Диспетчера сообщений ADS разворачивается на кластере с помощью ADCM из загруженного установочного пакета (бандла). Скачать установочный пакет (версия: ``ads_v1.6.0.0-1``) можно с сайта разработчика: https://store.arenadata.io/#products/arenadata_streaming. Подробная инструкция по установке Диспетчера сообщений приведена в официальной документации к ПО Диспетчера сообщений (`https://docs.arenadata.io/DTM/Install/ADS.html `__ , https://docs.arenadata.io/ads/Install/index.html ). В данной инструкции описывается установка кластера Kafka и импорт уже установленного кластера Zookeeper. Установка ПО Zookeeper на кластер приведена в инструкции по установке ADQM. 1. Для создания кластера необходимо иметь предварительно загруженный бандл (версия: ads_v1.6.0.0-1). В графическом интерфейсе ADCM осуществить переход в раздел *CLUSTERS -> Create cluster*. 2. В разделе **Services** графического интерфейса ADCM необходимо добавить сервисы в созданный кластер. 3. В случае, если Kafka и Zookeeper разворачивается в одном кластере, необходимо добавить сервис Zookeeper. 4. В разделе Hosts графического интерфейса ADCM указать серверы созданного кластера, на которых будет развёрнуто ПО ADS. 5. В разделе Hosts - Components указать три узла (ноды) Kafka. 6. Указать кластер *Zookeeper* в разделе Import, в случае если *Zookeeper* находится на другом кластере. 7. Нажатием программной кнопки **InstalL** инициировать процесс установки. В новом окне с дополнительными параметрами – нажатием программной кнопки **Run** запустить установку. 8. Проверить успешность завершения установки: - Проверить лог-файл *Zookeeper* по относительному пути:: /var/log/zookeeper/. - Проверить лог-файл Kafka по относительному пути: /var/log/kafka/. - Проверить настройки подключения к кластеру *Zookeeper* с помощью сторонней утилиты *KafkaTool*. - Проверить корректность разрешения имен серверов для автоматического определения bootstrap-серверов Kafka. При отсутствии DNS-севера прописать в локальный ``hosts`` адреса Kafka. - Определить путь ``chroot path``, запустив на любом сервере *Zookeeper* команду:: /usr/lib/zookeeper/bin/zkCli.sh После выполнить команду:: ls /arenadata/cluster. При проверке, в данном руководстве, использовался графический интерфейс приложения Offset Explorer 2.1 (https://www.kafkatool.com/download.html). Настройка Диспетчера сообщений ADS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Инструкция по настройке Диспетчера сообщений ADS через Менеджер кластера ADCM приведена в официальной документации к ПО Менеджера кластера ADCM (https://docs.arenadata.io/ads/AdminGuide/Config_ADCM.html ). Установка ПО ADB ~~~~~~~~~~~~~~~~ Подробная инструкция по установке СУБД ADB приведена в документации к СУБД ADB (`https://docs.arenadata.io/DTM/Install/ADB.html `__). Для установки кластера ADB посредством ADCM необходимо выполнить следующие шаги: 1. Установить ADCM (см. п.3.2.3); 2. Создать хосты для кластера ADB: 3. Загрузить выбранный бандл хоста (версия: ADB 6.15, ссылка для скачивания https://store.arenadata.io/#products/arenadata_db ). 4. Открыть в графическом интерфейсе ADCM раздел “BUNDLES”. Нажать программную кнопку “Upload bundle” и в открывшейся экранной форме выбрать файл бандла ADB. Проверить отображение факта успешной загрузки в общем списке бандлов на вкладке “BUNDLES”. - Для установки понадобится один или более хост для размещения мастера, резервного мастера и сегментов. 5. В графическом интерфейсе ADCM перейти в раздел *CLUSTERS -> Create cluster*. Создать кластер. 6. Добавить сервисы ADB и PXF на созданный кластер. .. note:: Список сервисов, отображенный на рисунке, может отличаться в зависимости от установленной версии бандла. - В диалоговом окне Add service указать сервис PXF (данный сервис доступен только в версии «Arenadata Enterprise») как подлежащий к установке; - В диалоговом окне Add service не указывать сервис ADB to Kafka (данный сервис доступен только в версии «Arenadata Enterprise») как подлежащий установке. 6. В разделе **Hosts** указать серверы, на которых будет развёрнут кластер ADB. 7. В разделе *Hosts - Components* указать назначение узлов: ``master`` ставится на один узел, ``segment`` на два других узла, 8. ``PXF`` - на все узлы. 9. При необходимости указать количество зеркал и сегментов на узлах в разделе конфигурации сервиса ADB. По умолчанию, количество сегментов на хост = (CPU cores)/2. 10. Через графический интерфейс ADCM в разделе **Configuration** установить флажок **Set up EPEL repo**, необходимый для установки ``kafka fwd``. 11. Выполнить предварительную проверку кластерной конфигурации и необходимых условий путём нажатия программной кнопки **Precheck**. Осуществить отслеживание статуса проверки в разделе **JOBS**. 12. В случае успешности проверки выполнить установку ADB путём нажатия программной кнопки Install. После установки осуществить перезагрузку серверов. 13. Выполнить актуализацию установленного PXF-сервиса для кластера ADB: - собрать из репозитория http://github.com/arenadata/kafka-pxf-connector актуальную версию PXF-сервиса (см. документацию по коннектору GreenPlum: https://gpdb.docs.pivotal.io/6-8/pxf/sdk/build_conn.html#demo_buildjar); - при необходимости развернуть актуальную версию PXF-сервиса (см. документацию по коннектору GreenPlum: https://gpdb.docs.pivotal.io/6-8/pxf/sdk/deploy_conn.html) - На каждом хосте сегмента с PXF-сервисом заменить соответствующий этому сервису jar-file на актуальную версию, собранную из репозитория .. code-block:: bash cp /pxf-kafka/env/pxf-profiles.xml $PXF_CONF/conf/ cp /pxf-kafka/build/libs/pxf-kafka-*.jar $PXF_CONF/lib/ cp /pxf-kafka/build/libs/kafka-clients-*.jar $PXF_CONF/lib/ cp /pxf-kafka/build/libs/avro-1.9.2.jar $PXF_CONF/lib/shared pxf cluster sync - посредством SQL-консоли кластера ADB выполнить проверочные запросы .. code-block:: sql CREATE WRITABLE EXTERNAL TABLE kafka_tbl (a TEXT, b TEXT, c TEXT) LOCATION ('pxf://?PROFILE=kafka&BOOTSTRAP_SERVERS=') FORMAT 'CUSTOM' (FORMATTER='pxfwritable_export'); insert into kafka_tbl values ('a', 'b,c', 'd'), ('x', 'y', 'z'); drop external table kafka_tbl; 1. При отсутствии автоматического встраивания и настройки PXF в кластер ADB через Менеджер кластера ADCM осуществить запуск и настройку ``PXF`` в кластере ADB, управляемом ADCM. - В графическом интерфейсе ADCM в разделе **CLUSTERS** выбрать требуемый кластер ADB. - В графическом интерфейсе ADCM для выбранного кластера перебрать все хосты и в разделе Actions выбрать Install rng-tools (для устранения ошибки *ADBDEV-306: PXF fail with timeout on start*).  - В графическом интерфейсе ADCM для выбранного кластера в разделе **Services** добавить ``PXF``, в разделе *Hosts - Components* добавить ``PXF`` на каждый хост.  - Выполнить проверку того, что PXF установился в /usr/lib/pxf под отдельным пользователем pxf. - Выполнить следующие операции на каждом хосте в силу ограничений работы команд cluster в таком окружении. - Выполнить: .. code-block:: bash sudo su - pxf mkdir /var/lib/pxf/servers/ vi /var/lib/pxf/servers//jdbc-site.xml PXF_HOME=/usr/lib/pxf /usr/lib/pxf/bin/pxf restart Сконфигурировать ``jdbc-site.xml``: .. code-block:: xml              jdbc.driver         org.postgresql.Driver                   jdbc.url         jdbc:postgresql://10.92.3.31:5432/postgres                   jdbc.user         postgres                   jdbc.password         postgres      - Выполнить запрос в SQL-консоли ADB: .. code-block:: sql CREATE WRITABLE EXTERNAL TABLE sample ( id int, name varchar ) LOCATION ('pxf://sample?PROFILE=Jdbc&SERVER=') FORMAT 'CUSTOM' (FORMATTER='pxfwritable_export'); insert into sample values (100,'qwe'); - Проверить наличие ошибок, записанных лог-файл в /var/lib/pxf/logs/. 1. Выполнить установку ``kafka-fwd`` после успешной установки кластера ADB. Зайти на каждый узел кластера по протоколу ``ssh`` и через профиль пользователя root выполнить пакет команд .. code-block:: bash yum install -y wget epel-release libcsv-devel wget https://ci.arenadata.io/artifactory/ADB/6.13.0_arenadata13/centos/7/enterprise/x86_64/kafka-fdw-0.10-377.git3fe5e36.el7.x86_64.rpm yum install -y kafka-fdw-0.10-377.git3fe5e36.el7.x86_64.rpm cd /usr/lib/gpdb/lib/postgresql sudo chown gpadmin:gpadmin kadb_fdw.so 16. Выполнить настройку удалённого доступа для возможности подключения к СУБД извне. Прописать правила доступа в файле ``pg_hba.conf``. Формат доступа подробно описан в документации по postgresql. Добавить правило доступа через графический интерфейс ADCM в конфигурации кластера ADB. Проверить на мастер-узле файл ``/data1/master/gpseg-1/pg_hba.conf`` на наличие запрещающих правил выше добавленного правила доступа. При наличии запрещающих правил удалить их. Добавляемые правила доступа имеют вид: .. code-block:: bash host all all 10.92.3.33/32 md5 # доступ для всех пользователей на все БД из указанной подсети host all test 0.0.0.0/0 md5 # доступ ко всем БД из любой подсети пользователю test 17. Выполнить настройку среды путём создания вручную или при добавлении сервиса ADB до его инициализации. - Для создания базы вручную после установки кластера: подключиться к мастер-узлу по ssh; подключиться в качестве пользователя pgadmin su - gpadmin; подключиться к СУБД командой: .. code-block:: bash psql adb Выполнить в СУБД SQL-запрос: .. code-block:: sql CREATE DATABASE <имя среды>. - Подключить коннектор kafka-greenplum следующими инструкциями: .. code-block:: sql CREATE EXTENSION IF NOT EXISTS kadb_fdw для подключения ``kafka-greenplum connector writer`` .. code-block:: sql CREATE EXTENSION IF NOT EXISTS pxf для подключения ``kafka-greenplum connector reader`` - Создать профиль пользователя через графический интерфейс ADCM в разделе сервиса **ADB - Create role** с установкой флажка **Make role superuser**, или создать профиль вручную через подключение к СУБД psql <имя среды> и выполнения SQL-запроса: .. code-block:: sql ALTER USER <имя пользователя> WITH SUPERUSER. 18. Выполнить следующие проверки: - проверку статуса сегментов с помощью SQL-запроса .. code-block:: sql select \* from gp_segment_configuration - проверку установленной версии с помощью команд: .. code-block:: bash postgres --gp-version postgres -V - проверку прав пользователя на создание схемы:: Create schema IF NOT EXISTS test; Drop schema test; Настройка ПО ADB ~~~~~~~~~~~~~~~~ Инструкция по настройке СУБД ADB приведена в официальной документации к СУБД ADB (https://docs.arenadata.io/adb/adminguide/managetools.html). Установка ПО ADG ~~~~~~~~~~~~~~~~ Установку ПО ADG рекомендуется производить на хост или виртуальную машину (или на группу - кластер) под управлением ОС Linux, дистрибутив CentOS 7, Red Hat Enterprise Linux 7 или производных. Пользователь, выполняющий установку, должен находиться в группе ``sudo``. **Подготовка управляющего хоста** Для установки ADG необходимо подготовить управляющий хост или виртуальную машину, с которой будет осуществляться установка ПО ADG на целевой кластер. Для этого на управляющий хост необходимо установить ПО удалённого управления (Ansible) из репозитория RPM-пакетов Extra Packages for Enterprise Linux (далее - EPEL). Допускается установка данного ПО непосредственно на целевой хост: .. code-block:: bash sudo yum -y install epel-release Проверка: об успешности установки репозитория EPEL свидетельствует сообщение в конце вывода программы установки yum: .. code-block:: bash *Installed:* *epel-release.noarch 0:7-11* *Complete!* Далее, необходимо обновить список пакетов из репозитория EPEL и установить ПО удалённого управления: .. code-block:: bash sudo yum update sudo yum install -y ansible Проверка: выполнить команду:: .. code-block:: bash rpm -qa ansible» .. note:: Версия пакета может отличаться. .. code-block:: bash rpm -qa ansible ansible-2.9.23-1.el7.noarch Для ПО удалённого управления необходимо установить роль ``tarantool.cartridge`` (дополнительный программный модуль). Необходим доступ к сайту github.com. Приведен полный вывод успешного процесса установки: .. code-block:: bash ansible-galaxy install tarantool.cartridge downloading role 'cartridge', owned by tarantool downloading role from https://github.com/tarantool/ansible-cartridge/archive/1.10.0.tar.gz extracting tarantool.cartridge to /home/vagrant/.ansible/roles/tarantool.cartridge* tarantool.cartridge (1.10.0) was installed successfully Проверка: выполнить команду: .. code-block:: bash ansible-galaxy role list в выводе должна быть строка с ролью ``tarantool.cartridge``: .. code-block:: bash ansible-galaxy role list tarantool.cartridge, 1.10.0 **Установка зависимостей ПО ADG** Для корректной работы ПО AGD на *целевой хост* необходимо установить дополнительные зависимости доступные в официальном репозитории CentOS 7: .. code-block:: bash sudo yum install -y snappy zip unzip Также необходимо установить дополнительные зависимости из RPM-пакетов. Перед выполнением команд установки данные файлы необходимо предварительно скопировать на целевой хост (ссылки для скачивания указаны в Таблица 2 - Состав типового ПО ведомственной витрины данных НСУД): .. code-block:: bash sudo rpm -i rpm/avroc-1.10.0-1.el7.x86_64.rpm sudo rpm -i rpm/libzstd-1.4.5-3.el7.x86_64.rpm sudo rpm -i rpm/librdkafka-1.5.0-1.el7.x86_64.rpm Для проверки выполнить следующую команду: .. code-block:: bash rpm -qa snappy zip unzip avroc libzstd librdkafka В выводе отображается список установленных пакетов. .. note:: Версии пакетов могут отличаться. .. code-block:: bash rpm -qa snappy zip unzip avroc libzstd librdkafka zip-3.0-11.el7.x86_64 libzstd-1.4.5-3.el7.x86_64 snappy-1.1.0-3.el7.x86_64 avroc-1.10.0-1.el7.x86_64 librdkafka-1.5.0-1.el7.x86_64 unzip-6.0-22.el7_9.x86_64 Далее, устанавливается основная зависимость - платформа in-memory вычислений Tarantool: .. code-block:: bash curl -L https://tarantool.io/yDNXllJ/release/2.6/installer.sh \| bash sudo yum install -y tarantool Проверка: выполнить команду: .. code-block:: bash rpm -qa tarantool rpm -qa tarantool tarantool-2.6.3.0-1.el7.x86_64 Установка ПО ADG ~~~~~~~~~~~~~~~~ Установка осуществляется из папки с заранее подготовленным файлом с конфигурацией кластера и файлом со списком целевых хостов. Процедура установки на один или несколько хостов не отличается. Пример файла ``adg.yml`` смотри в Приложении 1. В файле ``adg.yml`` перед запуском роли необходимо изменить ряд параметров: 1. IP-адрес 192.168.99.9 на адрес целевого хоста. 2. Параметры доступа ansible_user, ansible_password могут быть заполнены на валидные или убраны, при указании корректного ключа в параметре ``ansible_ssh_private_key_file``. 3. Параметр ``cartridge_cluster_cookie`` следует заменить на свой. Он служит меткой для определения «своих» экземпляров кластера ADG, если в одном контуре будет установлено более 1 кластера. 4. В файл ``config.yml`` (пример файла ``config.yml`` смотри в Приложении 1) необходимо изменить ``kafka_server_ip`` на реальный IP до kafka сервера. Если серверов несколько, можно указать через запятую. 5. После внесения настроек в ``adg.yml`` установка производится командой: .. code-block:: bash ansible-playbook -i adg.yml cartridge.yml из папки в, которой расположен файл ``adg.yml``, например, если файл расположен в папке *inventory*, команда будет выглядеть следующим образом: .. code-block:: bash cd inventory ansible-playbook -i adg.yml cartridge.yml Пример файла ``cartridge.yml`` (см. Приложение 1.) В конце работы команды ansible-playbook выводится итоговая таблица. В столбце со счетчиками ошибок их количество должно быть равно нулю: .. code-block:: bash failed=0 у всех экземпляров ADG. *PLAY RECAP \**********************************************************\** *api-1 : ok=57 changed=9 unreachable=0 failed=0 skipped=30 rescued=0 ignored=0* *c-1 : ok=26 changed=3 unreachable=0 failed=0 skipped=17 rescued=0 ignored=0* *ip-1 : ok=26 changed=3 unreachable=0 failed=0 skipped=17 rescued=0 ignored=0* *out-task-1 : ok=26 changed=3 unreachable=0 failed=0 skipped=17 rescued=0 ignored=0* *sch-1 : ok=26 changed=3 unreachable=0 failed=0 skipped=17 rescued=0 ignored=0* *state-1 : ok=26 changed=3 unreachable=0 failed=0 skipped=17 rescued=0 ignored=0* *storage-1 : ok=26 changed=3 unreachable=0 failed=0 skipped=17 rescued=0 ignored=0* **Настройка конфигурации для доступа к kafka** Откройте в Web-браузере адрес целевого хоста, с указанием HTTP-порта. Например: http://192.168.99.9:8181/. Выбрать раздел **Configuration files** и загрузить файл конфигурации ``config.yml`` с корректно указанным в нем адресом Kafka-сервера. Нажать кнопку **Save** и получить корректный ответ о загрузке конфигурации. Перейдите на вкладку **Code** убедитесь, что конфигурация загрузилась . Далее необходимо провести перезапуск сервисов для принятия настроек конфигурации. Для этого выполните в ssh-консоли следующую команду: .. code-block:: bash sudo systemctl restart memstorage@\* Откройте в Web-браузере адрес целевого хоста, с указанием HTTP-порта. Например: http://192.168.99.9:8181/ и перейдите в раздел **Cluster**. На кнопке **Issues** количество ошибок должно быть равно нулю, как в примере: «Issues: 0». В случае отсутствия ошибок нужно нажать красную кнопку **Bootstrap vshard**. Это действие выполняется однократно после успешной установки. Проверка-2: выполнить команду: .. code-block:: bash systemctl status memstorage@* Ниже приведен полный вывод работы этой команды: .. code-block:: bash systemctl status memstorage@\ memstorage@state-1.service - Tarantool Cartridge app memstorage@state-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled) Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Main PID: 18638 (tarantool) CGroup: /system.slice/system-memstorage.slice/memstorage@state-1.service └─18638 tarantool init.lua : memstorage@state-1 memstorage@c-1.service - Tarantool Cartridge app memstorage@c-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled)* Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Main PID: 18665 (tarantool) CGroup: /system.slice/system-memstorage.slice/memstorage@c-1.service └─18665 tarantool init.lua : memstorage@c-1 memstorage@sch-1.service - Tarantool Cartridge app memstorage@sch-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled) Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Main PID: 18635 (tarantool) CGroup: /system.slice/system-memstorage.slice/memstorage@sch-1.service └─18635 tarantool init.lua : memstorage@sch-1 memstorage@ip-1.service - Tarantool Cartridge app memstorage@ip-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled) Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Main PID: 18649 (tarantool) CGroup: /system.slice/system-memstorage.slice/memstorage@ip-1.service └─18649 tarantool init.lua : memstorage@ip-1 memstorage@out-task-1.service - Tarantool Cartridge app memstorage@out-task-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled) Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Process: 18920 ExecStartPre=/bin/sh -c mkdir -p /var/lib/tarantool/memstorage.%i (code=exited, status=0/SUCCESS) Main PID: 18923 (tarantool) CGroup: /system.slice/system-memstorage.slice/memstorage@out-task-1.service └─18923 tarantool init.lua : memstorage@out-task-1 memstorage@api-1.service - Tarantool Cartridge app memstorage@api-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled) Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Main PID: 18547 (tarantool) *CGroup: /system.slice/system-memstorage.slice/memstorage@api-1.service* └─18547 tarantool init.lua : memstorage@api-1 memstorage@storage-1.service - Tarantool Cartridge app memstorage@storage-1 Loaded: loaded (/etc/systemd/system/memstorage@.service; enabled; vendor preset: disabled) Active: active (running) since Пн 2021-07-19 16:20:18 UTC; 28min ago Main PID: 18880 (tarantool) CGroup: /system.slice/system-memstorage.slice/memstorage@storage-1.service └─18880 tarantool init.lua : memstorage@storage-1 Настройка ПО ADG ~~~~~~~~~~~~~~~~ Инструкция по настройке СУБД ADG приведена в официальной документации к СУБД ADG и СУБД Tarantool (https://docs.arenadata.io/adg/install_adcm/ru/source/manage_tools/index.html). Установка ПО ProStore ~~~~~~~~~~~~~~~~~~~~~ Установка ядра витрины как ПО :term:`ProStore` осуществляется после установки Менеджера кластера ADCM, СУБД ADQM, ADS , СУБД ADG, СУБД ADB **Установка ПО ProStore из репозитория**  Для установки ПО :term:`ProStore` необходимо: 1. Клонировать репозиторий с исходным кодом проекта :term:`ProStore` из репозитория: `https://g.info.gov.ru/datamart/nsud-datamarts/-/blob/master/%D0%94%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D1%8B%20%D0%9F%D0%9E%20%D0%92%D0%B8%D1%82%D1%80%D0%B8%D0%BD%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%9D%D0%A1%D0%A3%D0%94/% `__ .. note:: Актуальная версия на момент написания данного руководства 3.4.0 2. Собрать проект :term:`ProStore` с помощью *Maven* (команда ``mvn package``); 3. Создать на сервере ProStore папки: */opt/query-execution* и */opt/status-monitor*. 4. В файлах сборки *adtm-3.4.0-master@c3279ff89d8* перейти в папку *dtm-query-execution-core*. 5. Скопировать файл из сборки *target/dtm-query-execution-core-3.4.0.jar* и загрузить в папку */opt/query-execution* на сервере. 6. Скопировать файл из сборки *config/application-default.yml* и загрузить в как */opt/query-execution/application.yml* на сервере. 7. Перейти в папку *dtm-status-monitor*. 8. Скопировать файлы из сборки *target/dtm-status-monitor-4.1.0.jar* и *dtm-status-monitor/src/main/resources/application.yml* в папку */opt/status-monitor* на сервере. 9. Создать файлы */opt/query-execution/logback.xml* и */opt/status-monitor/logback.xml*. Содержимое файлов: .. code-block:: xml application.log application.%d{yyyy-MM-dd}.log 30 3GB %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n 10. Создать файл */etc/systemd/system/query-execution.service* со следующим содержимым:: .. code-block:: xml [Unit] Description="Core service" After=syslog.target [Service] Type=simple WorkingDirectory=/opt/query-execution User=root Group=root ExecStart=/usr/bin/java \\ -Dlogback.configurationFile=/opt/query-execution/logback.xml \\ -jar dtm-query-execution-core-3.4.0.jar \\ --logging.config=/opt/query-execution/logback.xml 11. Создать файл */etc/systemd/system/status-monitor.service* со следующим содержимым: .. code-block:: xml [Unit] Description="Status monitor service" After=syslog.target [Service] Type=simple WorkingDirectory=/opt/status-monitor User=root Group=root ExecStart=/usr/bin/java \\ -Dlogback.configurationFile=/opt/status-monitor/logback.xml \\ -jar dtm-status-monitor-4.1.0.jar \\ --logging.config=/opt/status-monitor/logback.xml 12. Включить автозапуск сервисов: .. code-block:: bash sudo systemctl enable query-execution status-monitor 13. Получить драйвер в папке dtm-jdbc-driver; 14. Настроить подключения к JDBC-клиентам типа DataGrip и DBeaver (см. «Руководство оператора» раздел 3.1.1 и 3.1.1.3); 15. Клонировать репозиторий https://github.com/arenadata/kafka-clickhouse-connector/tree/release-3.4.0 16. Перейти в директорию *kafka-clickhouse-reader* 17. Собрать при помощи команды: .. code-block:: bash mvn clean package 18. Перейти в директорию *kafka-clickhouse-writer* 19. Собрать при помощи команды: .. code-block:: bash mvn clean package 20. Создать на сервере ProStor папки: */opt/kafka-clickhouse-writer* и */opt/kafka-clickhouse-reader* 21. Скопировать файлы из сборки *kafka-clickhouse-reader/src/main/resources/application.yml* и *kafka-clickhouse-reader/target/kafka-clickhouse-reader-3.4.0.jar* в */opt/kafka-clickhouse-reader* 22. Скопировать файлы из сборки *kafka-clickhouse-writer/src/main/resources/application.yml* и *kafka-clickhouse-writer/target/kafka-clickhouse-writer-3.4.0.jar* в */opt/kafka-clickhouse-writer* 23. Создать файл */etc/systemd/system/kafka-clickhouse-reader.service* со следующим содержимым:: .. code-block:: xml [Unit] Description="kafka-clickhouse-reader" After=syslog.target [Service] Type=simple WorkingDirectory=/opt/kafka-clickhouse-reader User=root Group=root ExecStart=/usr/bin/java \\ -Dspring.config.location=classpath:application.yml \\ -jar kafka-clickhouse-reader-3.4.0.jar 24. Создать файл */etc/systemd/system/kafka-clickhouse-writer.service* со следующим содержимым: .. code-block:: xml [Unit] Description="kafka-clickhouse-writer" After=syslog.target [Service] Type=simple WorkingDirectory=/opt/kafka-clickhouse-writer User=root Group=root ExecStart=/usr/bin/java \\ -Dspring.config.location=classpath:application.yml \\ -jar kafka-clickhouse-writer-3.4.0.jar 25. Настроить :term:`ProStore` (см. раздел 3.2.11) 26. Запустить :term:`ProStore` (см. раздел 4.5.1) 27. Проверить корректность функционирования :term:`ProStore` путём подачи произвольного SQL- запроса к :term:`ProStore` и сопоставления ожидаемого эталонного и полученного результатов. 28. Пример тестового запроса .. code-block:: sql SELECT 1; Ответ: 1. Настройка ПО ProStore ~~~~~~~~~~~~~~~~~~~~~ Настройка ПО :term:`ProStore` заключается в настройке составляющих его компонентов и осуществляется путём внесения изменений в описание программной конфигурации кластера, размещенное в текстовом конфигурационном yml-файле сервиса исполнения запросов. Программная конфигурация, в частности, включает сетевые адреса, сетевые порты и идентификаторы компонентов для взаимосвязи между ними, пути на дисковых пространствах для обработки полезных и служебных данных, а также метаданных. **Настройка Сервиса исполнения запросов (query-execution)** Настройка сервиса исполнения запросов осуществляется путем заполнения в конфигурационном текстовом yml-файле разделов, описанных ниже (для первоначальной установки используйте значения «по умолчанию»). Пример полного yml-файла со всеми конфигурируемыми атрибутами, приведен в Приложении 1. 1. Настройки журналирования сервиса исполнения запросов - ``io.arenadata.dtm.query.execution``- задание уровня важности сообщений, журналируемых в лог-файл; По умолчанию установлен в ``TRACE``; - ``DTM_METRICS_PORT``- номер порта, используемого Сервисом исполнения запросов для отправки и получения метрик; - ``DTM_METRICS_ENABLED``- настройка генерации метрик со стороны :term:`ProStore`; - ``DTM_METRICS_SCOPE``- состав метрик, видимых через веб-соединения 2. Настройка ProStore: - ``CORE_PLUGINS_ACTIVE``- перечень используемых плагинов для доступа к СУБД ADB, ADG, ADQM - ``DTM_CORE_PLUGINS_RELATIONAL`` - настройка профилей приоритетности СУБД для общих реляционных запросов - ``DTM_CORE_PLUGINS_ANALYTICAL`` - настройка профилей приоритетности СУБД для запросов аналитики - ``DTM_CORE_PLUGINS_DICTIONARY`` - настройка профилей приоритетности СУБД для запросов ключ-значение - ``DTM_CORE_PLUGINS_UNDEFINED`` - настройка профилей приоритетности СУБД для не указанной категории запросов - ``DTM_CORE_HTTP_PORT`` - номер порта, на который Сервис исполнения запросов ожидает входящие запросы от JDBC-драйвера; - ``DTM_NAME`` - имя среды для формирования полного наименования датамартов; - ``CORE_TIME_ZONE`` - настройки временной зоны; - ``DTM_CORE_METRICS_ENABLED`` - настройки генерации метрики Сервиса исполнения запросов; - ``DTM_CORE_TASK_POOL_SIZE`` - максимальный объем пула задач в cервисе исполнения запросов; - ``DTM_CORE_TASK_TIMEOUT`` - интервал времени завершения задачи, выполняемой в Сервисе исполнения запросов; 3. Оптимизация работы сокета ``TCP_NODELAY``: - ``DTM_CORE_HTTP_TCP_NODELAY`` - настройка режима оптимизации работы сокета ``TCP_NODELAY``; - ``DTM_CORE_HTTP_TCP_FAST_OPEN`` - настройка режима ``TCP FAST_OPEN``; - ``DTM_CORE_HTTP_TCP_QUICK_ACK`` - настройка режима оптимизации работы сокета ``TCP_QUICKACK``; 1. Настройки для ``EDML`` операторов: - ``EDML_DATASOURCE`` - тип СУБД-источника (ADB, ADQM, ADG); - ``EDML_DEFAULT_CHUNK_SIZE`` -- размер ``chunk`` по умолчанию; - ``EDML_STATUS_CHECK_PERIOD_MS`` - период проверки статуса плагина в миллисекундах; - ``EDML_FIRST_OFFSET_TIMEOUT_MS`` - интервал времени ожидания до таймаута  в миллисекундах при работе с первым смещением; - ``EDML_CHANGE_OFFSET_TIMEOUT_MS`` - интервал времени ожидания до таймаута в миллисекундах при работе с первым смещением в топике Kafka; 5. Настройка Zookeeper-серверов: - ``ZOOKEEPER_DS_ADDRESS`` - сетевой адрес хоста Zookeeper для служебной БД; - ``ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS`` - интервал времени ожидания (в миллисекундах) соединения с хостом Zookeeper для служебной БД до достижения таймаута; - ``ZOOKEEPER_DS_SESSION_TIMEOUT_MS`` -- интервал времени бездействия (в миллисекундах) соединения с хостом Zookeeper для служебной БД до достижения таймаута; - ``ZOOKEEPER_DS_CHROOT`` - корневой путь к хосту Zookeeper для служебной БД; - ``ZOOKEEPER_KAFKA_ADDRESS`` - сетевой адрес хоста Zookeeper для брокера сообщений Kafka; - ``ZOOKEEPER_KAFKA_CONNECTION_TIMEOUT_MS`` - интервал времени ожидания (в миллисекундах) соединения с хостом Zookeeper для брокера сообщений Kafka до достижения таймаута; - ``ZOOKEEPER_KAFKA_SESSION_TIMEOUT_MS`` - интервал времени бездействия (в миллисекундах) соединения с хостом Zookeeper для брокера сообщений Kafka до достижения таймаута; - ``ZOOKEEPER_KAFKA_CHROOT`` - корневой путь к хосту Zookeeper для брокера сообщений Kafka; 6. Настройка Kafka-серверов: - ``KAFKA_INPUT_STREAM_TIMEOUT_MS`` -- интервал времени ожидания (в миллисекундах) входного потока данных для брокера сообщений Kafka до достижения таймаута; - ``KAFKA_STATUS_EVENT_ENABLED`` - разрешение на публикацию событий; - ``KAFKA_STATUS_EVENT_TOPIC`` - наименование топика Kafka, в который публикуются события; - ``STATUS_MONITOR_URL`` - сетевой адрес, порт и путь к Сервису мониторинга статусов Kafka; 7. Настройки кэширования запросов: - ``CACHE_INITIAL_CAPACITY`` - начальная емкость кэша; - ``CACHE_MAXIMUM_SIZE`` - максимальный размер кэша; - ``CACHE_EXPIRE_AFTER_ACCESS_MINUTES`` - время (в минутах) устаревания кэша после последнего момента доступа к нему; 8. Настройки для плагина ADB: - ``ADB_USERNAME`` - имя пользователя/логин для авторизации в СУБД ADB; - ``ADB_PASS`` - пароль для авторизации в СУБД ADB; - ``ADB_HOST`` - сетевой адрес хоста со СУБД ADB; - ``ADB_PORT`` - сетевой адрес порта на хосте с СУБД ADB; - ``ADB_MAX_POOL_SIZE`` - максимальный размер пула подключений к СУБД ADB; - ``ADB_FETCH_SIZE`` - максимальный размер возвращаемого результата по FETCH-запросу к СУБД ADB; - ``ADB_LOAD_GROUP`` -- наименование консьюмер-группы СУБД ADB для взаимодействия с брокером сообщений Kafka; 9. Настройки механизма MPPW загрузки данных для плагина ADB: - ``ADB_MPPW_POOL_SIZE`` - максимальный размер пула подключений к СУБД ADB для операций MPPW; - ``ADB_MPPW_STOP_TIMEOUT_MS`` - интервал времени остановки таймаута в миллисекундах при операции MPP-загрузки в СУБД ADB; - ``ADB_MPPW_DEFAULT_MESSAGE_LIMIT`` - предельный размер сообщения по умолчанию для операции MPP-загрузки в СУБД ADB; - ``ADB_MPPW_FDW_TIMEOUT_MS`` -- интервал времени ожидания до таймаута в миллисекундах при операции MPP-загрузки в СУБД ADB; 10. Настройки для СУБД ADG / Tarantool: - ``TARANTOOL_DB_HOST`` - сетевой адрес хоста с СУБД ADG; - ``TARANTOOL_DB_PORT`` - сетевой адрес порта на хосте с СУБД ADG; - ``TARANTOOL_DB_USER`` - имя пользователя/логин для авторизации в СУБД ADG; - ``TARANTOOL_DB_PASS`` - пароль для авторизации в СУБД ADG; - ``TARANTOOL_DB_OPER_TIMEOUT`` - максимальный интервал времени ожидания выполнения операции СУБД ADG до тайм-аута; - ``TARANTOOL_DB_RETRY_COUNT`` - максимальное количество повторных попыток выполнения операции; - ``TARANTOOL_CATRIDGE_URL`` - сетевой адрес и порт картриджа с графическим интерфейсом к СУБД ADG; - ``ADG_CONSUMER_GROUP`` - *consumer-группа*  СУБД ADG для взаимодействия с брокером сообщений Kafka; - ``ADG_MAX_MSG_PER_PARTITION`` -- максимальное количество сообщений на раздел СУБД ADG. - ``ADG_CB_FUNC_IDLE`` -- время простоя (в секундах) *callback-функции*; - ``ADG_ROLLBACK_OPERATION_BATCH_SIZE`` - размер пакета операций при откате операции; - ``ADG_CIRCUIT_BREAKER_MAX_FAILURES`` - максимальное количество отказов ADG по паттерну ``circuitbreaker``; - ``ADG_CIRCUIT_BREAKER_TIMEOUT`` - интервал времени фиксации отказа при пропадании отклика ADG; - ``ADG_CIRCUIT_BREAKER_FALLBACK_ON_FAILURE`` - использование паттерна ``fallback`` при отказе; - ``ADG_CIRCUIT_BREAKER_RESET_TIMEOUT`` - интервал времени до сброса по паттерну ``timeout``; - ``ADG_WEB_CLIENT_MAX_POOL_SIZE`` - максимальный размер пула подключений веб-клиентов к СУБД ADG; 11. Настройки для плагина ADQM: - ``ADQM_DB_NAME`` - наименование СУБД ADQM; - ``ADQM_USERNAME`` - имя пользователя/логин для авторизации в СУБД ADQM; - ``ADQM_PASS`` - пароль для авторизации в СУБД ADQM; - ``ADQM_HOSTS`` - сетевой адрес хоста с СУБД ADQM и номер порта на хосте; - ``ADQM_SOCKET_TIMEOUT`` - интервал времени ожидания отклика соединения с СУБД ADQM до таймаута; - ``ADQM_DATA_TRANSFER_TIMEOUT`` - интервал времени ожидания завершения обмена данными с СУБД ADQM до таймаута; - ``ADQM_CLUSTER`` - наименование кластера СУБД ADQM; 12. Настройки MPPR для СУБД ADQM: - ``ADQM_MPPR_CONNECTOR_HOST`` - сетевой адрес коннектора MPP-выгрузки данных из ADQM; - ``ADQM_MPPR_CONNECTOR_PORT`` - сетевой порт коннектора MPP-выгрузки данных из ADQM; - ``ADQM_MPPR_CONNECTOR_URL`` - сетевой путь к коннектору MPP-выгрузки данных из ADQM; 13. Настройки MPPW для СУБД ADQM: - ``ADQM_CONSUMER_GROUP`` - наименование консьюмер-группы СУБД ADQM для взаимодействия с брокером сообщений Kafka; - ``ADQM_BROKERS`` - сетевой адрес брокера сообщений Kafka; - ``ADQM_MPPW_LOAD_TYPE`` - тип интерфейса для MPPW-загрузки данных в СУБД ADQM; - ``ADQM_REST_START_LOAD_URL`` - сетевой адрес и путь к REST-интерфейсу для старта загрузки данных в СУБД ADQM; - ``ADQM_REST_STOP_LOAD_URL`` - сетевой адрес и путь к REST-интерфейсу для остановки загрузки данных в СУБД ADQM; - ``ADQM_WEB_CLIENT_MAX_POOL_SIZE`` - максимальный размер пула подключений веб-клиентов к СУБД ADQM; **Настройка Сервиса мониторинга Kafka (status-monitor)** Настройка Сервиса мониторинга Kafka осуществляется путём указания в соответствующем конфигурационном текстовом yml-файле параметров отслеживания файлов-топиков брокера сообщений Kafka, таких как: смещения ``consumer``, содержания последнего сообщения и времени появления последнего сообщения. - ``STATUS_MONITOR_BROKERS`` - сетевые адреса и порты брокеров сообщений Kafka, которые отслеживает монитор статусов Kafka - ``STATUS_MONITOR_CONSUMERS`` - количество потребителей (``consumer``) Сервиса мониторинга Kafka **Настройка Сервиса kafka-clickhouse-reader** Настройка Сервиса ``kafka-clickhouse-reader`` осуществляется путём указания в соответствующем конфигурационном текстовом yml-файле параметров: - ``CLICKHOUSE_DB_NAME`` – наименование базы данных в ADQM - ``CLICKHOUSE_HOSTS`` – имя одно их хостов ADQM - ``CLICKHOUSE_PASS`` – пароль пользователя для доступа к ADQM - ``CLICKHOUSE_USERNAME`` – имя пользователя для доступа к ADQM - ``ZOOKEEPER_HOSTS`` - Подключение к Zookeeper :term:`ProStore` - ``KAFKA_CLUSTER_ROOTPATH`` - Путь хранения информации о Kafka :term:`ProStore` в Zookeeper **Настройка Сервиса kafka-clickhouse-writer** Настройка Сервиса kafka-clickhouse-writer осуществляется путём указания в соответствующем конфигурационном текстовом yml-файле параметров: - ``CLICKHOUSE_DB_NAME`` – наименование базы данных в ADQM - ``CLICKHOUSE_HOSTS`` – имя одно их хостов ADQM - ``CLICKHOUSE_PASS`` – пароль пользователя для доступа к ADQM - ``CLICKHOUSE_USERNAME`` – имя пользователя для доступа к ADQM - ``KAFKA_BOOTSTRAP_SERVERS`` - Подключение к :term:`ProStore` Kafka - ``ENV`` - Название окружения Установка СМЭВ3-адаптера ~~~~~~~~~~~~~~~~~~~~~~~~ Установка :term:`СМЭВ3-адаптер` возможна, только если были добавлены ключи. Действия по установке выполняются через ``SSH`` консоль технологического пользователя. **Установка КриптоПро** В случае использования для электронной подписи сервиса КриптоПро, необходимо предварительно скачать КриптоПро CSP (https://www.cryptopro.ru/download?pid=1417) и КриптоПро JCP (https://www.cryptopro.ru/download?pid=129) для Java JDK на компьютер, где будет устанавливаться :term:`СМЭВ3-адаптер`. Установить, следуя инструкции и документации на официальном сайте. После чего получить сертификат для установки от уполномоченных лиц и установить его в :term:`КриптоПро`. .. **Установка сервисной базы данных СМЭВ3-адаптера (smevdb)** .. Для работы отправки дельты по расписанию необходим установить сервисную базу данных. Параметры подключения к ней задаются в ``DeltaStorageVerticle``. Сервисная база данных базируется на *Postgres*. .. 1. Установите сервисную БД Postgresql согласно инструкции по установке, приведенной в официальной документации https://postgrespro.ru/docs/postgrespro/13/admin .. 2. Создайте в сервисной БД следующую таблицу: .. .. code-block:: sql .. CREATE TABLE public.delta_journal ( id bigint NOT NULL, template_key text NOT NULL, query_key text NOT NULL, column_name text NOT NULL, delta_info text NOT NULL, edited_at timestamp without time zone NOT NULL ); ALTER TABLE public.delta_journal ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY ( SEQUENCE NAME public.delta_journal_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1 ); ALTER TABLE ONLY public.delta_journal ADD CONSTRAINT delta_journal_pkey PRIMARY KEY (id); CREATE UNIQUE INDEX idx_delta_journal_key ON public.delta_journal USING btree (template_key, query_key, column_name); **Установка сервиса** *Подготовка конфигурации* Для подготовки конфигурации необходимо отредактировать переменные в файле ``application.yml`` (пример ``application.yml`` приведен в Приложении 1) дистрибутива :term:`СМЭВ3-адаптер`: 1. Указать корректный путь до СМЭВ. Переменная ``endpoint_url`` во всех вертиклах. 2. Указать корректный путь до ядра :term:`ProStore`. Блок ``ProcessorVerticle``: - ``jdbcUrl`` – строка подключения по JDBC в формате ``jdbc:postgresql://localhost:5432/smev3``; - ``username`` – логин для подключения; - ``password`` – пароль для подключения; - ``readOnly`` – доступ только на чтение; 3. Если для цифровой подписи используется :term:`VipNet`, указать переменные для доступа к :term:`VipNet`: - ``keystoreType`` - тип хранилища, ``VIPNETPKI`` для :term:`VipNet` - ``keystoreFile`` - URL Vipnet сервера - ``keystorePass`` - имя пользователя и пароль, выдается администратором Vipnet PKI - ``privateKeyAlias`` - токен, полученный от администратора VIPNet - ``certificateAlias`` - дублирование токена, полученного от администратора VIPNet 4. Если для цифровой подписи используется КриптоПро: - ``keystoreType`` - тип хранилища, JCP для КриптоПро - ``keystorePass`` - пароль хранилища ключей - ``privateKeyAlias`` - алиас приватного ключа - ``certificateAlias`` - алиас сертификата - ``privateKeyPass`` - пароль приватного ключа - ``signatureURI``, ``signatureAlgorithm``, ``digestMethod`` оставить аналогично указанным в примере Приложения 1. 5. Если используется механизм отправки дельт по расписанию и установлена сервисная БД, заполнить следующие параметры: Для вертикла ``SchedulerVerticle``: - ``interval`` - интервал между отправкой дельт; - ``template`` - pebble-шаблон/ Для вертикла ``DeltaStorageVerticle`` - ``jdbcUrl`` – строка подключения к сервисной БД по JDBC в формате ``jdbcUrl: jdbc:postgresql://127.0.0.1:5432/smev3_connector``; - ``username`` – логин для подключения; - ``password`` – пароль для подключения; Список параметров, которые необходимо настроить для обработки собственно запросов, их назначения и pebble шаблоны приведены в документе «Руководство программиста» п.3.1.2 *Установка* Для установки необходимо выполнить следующие действия: 1. Скопировать jar-файл :term:`СМЭВ3-адаптер`, конфигурационный файл ``application.yml``, jar-файл :term:`JDBC-драйвер` ДТМ, сконфигурированные pebble-шаблоны на целевую машину. 2. В консоли перейти в каталог, в который были скопированы описанные в п.1 файлы: Например:: cd ~/direct 3. Запустить jar-файл командой: .. code-block:: bash java -cp smev3-connector-x.x.x-fat.jar:dtm-jdbc-3.4.0.jar -Dconfig.location=application.yml io.vertx.core.Launcher yml 4. Дождаться завершения установки. При успешном запуске будет выведена следующая информация: .. code-block:: bash INFO: Succeeded in deploying verticle Установка ПОДД-адаптера ~~~~~~~~~~~~~~~~~~~~~~~ .. Установка ПОДД-адаптер .. Подключаем файл с установкой ПОДД-адаптер .. include:: ../../modules/podd-adapter-query/doc/podd_adapter_query_install.rst Настройка ПОДД-адаптера ~~~~~~~~~~~~~~~~~~~~~~~ .. Конфигурация ПОДД-адаптера (application.yml) .. Подключаем файл с настройками конфигурации ПОДД-адаптер .. include:: ../../modules/podd-adapter-query/doc/podd_adapter_query_config.rst Установка ETL ~~~~~~~~~~~~~ **Установка Apache Airflow** *Подготовка конфигурации* 1. Клонировать репозиторий Apache Airflow из официального репозитория:: git clone https://github.com/apache/airflow.git 2. Перейти в папку **airflow** 3. Создать в папке файл ``Dockerfile.custom`` со следующим содержимым:: FROM ${BASE_AIRFLOW_IMAGE} SHELL ["/bin/bash", "-o", "pipefail", "-e", "-u", "-x", "-c"] USER 0 # Install Java RUN mkdir -pv /usr/share/man/man1 \\ && mkdir -pv /usr/share/man/man7 \\ && curl -fsSL https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public \| apt-key add - \\ && echo 'deb https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ buster main' > \\ /etc/apt/sources.list.d/adoptopenjdk.list \\ && apt-get update \\ && apt-get install --no-install-recommends -y \\ adoptopenjdk-8-hotspot-jre \\ && apt-get autoremove -yqq --purge \\ && apt-get clean \\ && rm -rf /var/lib/apt/lists/\* # Установка JDR 1.8 ENV JAVA_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-jre-amd64 USER ${AIRFLOW_UID} # Установка компонента apache.spark RUN pip install --upgrade pip \\ && pip install --no-cache-dir --user 'apache-airflow[apache.spark]' *Установка* Установка docker описана в разделе 3.3.2. Установка Менеджера кластера ADCM. 1. Создать новый образ в докере, в той же директории, где расположен файл ``Dockerfile.custom``:: docker build . \\ --build-arg BASE_AIRFLOW_IMAGE="apache/airflow:2.0.1-python3.8" \\ -f Dockerfile.java8 \\ -t airflow:2.0.1-python3.8-custom 2. Скачать файл ``docker-compose.yaml`` с официального сайта Airflow https://Airflow.apache.org/docs/apache-airflow/2.0.1/docker-compose.yaml 3. Установить ``docker-compose.yaml`` через SSH-консоль технологического пользователя. - Выдать права на исполнение файла:: sudo chmod +x /usr/local/bin/docker-compose - Запустить sudo:: ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose - Проверить корректность установки:: $ docker-compose --version docker-compose version 1.28.6, build 1110ad01 4. Перейти в директорию с файлом ``docker-compose.yml`` Например: cd ~/direct 5. Инициализировать компоненты:: docker-compose up airflow-init 6. Запустить сервисы с новым образом:: docker-compose up AIRFLOW_IMAGE_NAME=apache/airflow:2.0.1-python3.8-custom **Установка Apache Spark** Установка docker описана в разделе 3.3.2. Установка Менеджера кластера ADCM. 1. Подготовка конфигурации 2. Клонировать репозиторий Apache Airflow из официального репозитория: git clone https://github.com/big-data-europe/docker-spark.git 3. Перейти в директорию docker-spark Пример: cd ~/direct 4. Выполнить скрипт ./build.sh или вручную последовательно запустить следующие команды: - сборка базового образа docker build -t bde2020/spark-base:3.1.1-hadoop3.2 - сборка образа мастер docker build -t bde2020/spark-master:3.1.1-hadoop3.2 - сборка образа воркера docker build -t bde2020/spark-worker:3.1.1-hadoop3.2 5. Проверить наличие собранных образов: Выполнить команду docker images: REPOSITORY TAG IMAGE ID CREATED SIZE bde2020/spark-worker 3.1.1-hadoop3.2 05c349b4646f 4 minutes ago 460MB bde2020/spark-master 3.1.1-hadoop3.2 7918c5357d6d 4 minutes ago 460MB bde2020/spark-base 3.1.1-hadoop3.2 5430434220d2 4 minutes ago 460MB 1. Установка 6. Перейти в директорию docker-spark, где располагается файлом docker-compose.yml Пример: cd ~/direct 7. Поднять Apache Spark командой: docker-compose up 8. Проверить командой: docker ps В списке запущенных образов должны присутствовать spark-worker и spark-master **Установка Apache Hadoop** Установка docker описана в разделе 3.3.2. Установка Менеджера кластера ADCM. 1. Подготовка конфигурации 2. Клонировать репозиторий Apache Hadoop из официального репозитория:: git clone https://github.com/big-data-europe/docker-hadoop.git Перейти в папку **docker-hadoop** Наример:: cd ~/direct 7. Выполнить скрипт ``make build`` или вручную последовательно запустить следующие команды: - сборка базового образа:: docker build -t bde2020/hadoop-base:master ./base - сборка остальных образов:: docker build -t bde2020/hadoop-namenode:master ./namenode docker build -t bde2020/hadoop-datanode:master ./datanode docker build -t bde2020/hadoop-resourcemanager:master ./resourcemanager docker build -t bde2020/hadoop-nodemanager:master ./nodemanager docker build -t bde2020/hadoop-historyserver:master ./historyserver docker build -t bde2020/hadoop-submit:master ./submit 8. Проверить наличие собранных образов: Выполнить команду docker images:: REPOSITORY TAG IMAGE ID CREATED SIZE bde2020/hadoop-submit master 665a424edc23 9 minutes ago 1.37GB bde2020/hadoop-historyserver master ff53bf6835e2 9 minutes ago 1.37GB bde2020/hadoop-nodemanager master c48c47bc840f 9 minutes ago 1.37GB bde2020/hadoop-resourcemanager master 74fc55d664d2 9 minutes ago 1.37GB bde2020/hadoop-datanode master f69c6460a292 9 minutes ago 1.37GB bde2020/hadoop-namenode master 7a8250da8510 9 minutes ago 1.37GB bde2020/hadoop-base master aeb6500ab4b5 10 minutes ago 1.37GB *Установка* 1. Перейти в директорию **docker-hadoop**, где располагается файл ``docker-compose.yml`` Наример:: cd ~/direct 2. Поднять Apache Hadoop командой:: docker-compose up 3. Проверить командой:: docker ps В списке запущенных образов должны присутствовать ``hadoop-resourcemanager``, ``hadoop-historyserver``, ``hadoop-datanode``, ``hadoop-nodemanager``, ``hadoop-namenode`` *Установка СУБД Tarantool* Установка docker описана в разделе 3.3.2. Установка Менеджера кластера ADCM. *Подготовка конфигурации* 1. Клонировать репозиторий Tarantool из официального репозитория:: git clone https://github.com/tarantool/docker.git 2. Выполнить сборку согласно инструкции: https://github.com/tarantool/docker#how-to-push-an-image-for-maintainers 1. Перейти в клонированную папку *docker* Например:: cd ~/direct 4. Выполнить сборку образа *docker* для Tarantool:: export TAG=2 export OS=alpine DIST=3.9 VER=2.8.0 PORT=5200 make -f .gitlab.mk build 5. Проверить наличие собранных образов командой docker images:: REPOSITORY TAG IMAGE ID CREATED SIZE tarantool/tarantool 2 27f80564ecce 2 minutes ago 298MB 6. Создать в клонированной директории *docker* файл ``docker-compose.yml`` со следующим содержимым:: .. code-block:: yaml version: "3" services: tarantool1: image: tarantool/tarantool:2 container_name: tarantool1 restart: always networks: - tarantool_network ports: - "3301:3301" volumes: - tarantool1_volume:/opt/tarantool environment: # https://github.com/tarantool/docker#environment-variables TARANTOOL_REPLICATION: "tarantool1,tarantool2" tarantool2: image: tarantool/tarantool:2 container_name: tarantool2 restart: always networks: - tarantool_network ports: - "3302:3301" volumes: - tarantool2_volume:/opt/tarantool environment: TARANTOOL_REPLICATION: "tarantool1,tarantool2" volumes: tarantool1_volume: tarantool2_volume: networks: tarantool_network: driver: bridge *Установка* 1. Перейти в директорию *docker*, где располагается файл ``docker-compose.yml`` Напимер: cd ~/direct 2. Пример запуска мастер-мастер репликации: https://github.com/tarantool/docker#start-a-master-master-replica-set 3. Поднять Tarantool командой:: docker-compose up 4. Проверить командой:: docker ps В списке запущенных образов должны присутствовать ``tarantool1`` и ``tarantool2`` Установка REST-адаптера ~~~~~~~~~~~~~~~~~~~~~~~ Установка сервисов и необходимых сервисных баз данных. .. attention:: Установка данных сервисов выполняется после установки «Core Services». Действия по установке выполняются на сервере ADCM через SSH-консоль технологического пользователя. **Установка docker-образов** Установка docker описана в разделе 3.3.2. Установка Менеджера кластера ADCM. Установить образ сервера конечных точек API, файл образа ``.tar`` должен быть загружен через docker. (ссылки для скачивания указаны в Таблица 2 - Состав типового ПО ведомственной витрины данных НСУД в строке «Сервер конечных точек API). Пример команды для установки:: docker image load -i **Подготовка конфигурации** Для подготовки скриптов необходимо выполнить следующие действия: 1. Отредактировать переменные в файле ``application.yml`` для вашей среды. Пример файла приведен в Приложении 1. Файл необходимо поместить в папку **config**: - Указать корректный путь до целевой БД. Переменная ``jdbc_url``. Например:: jdbc:{drv_name}://{IP_Host}:{Port}/{db_name} , где: - ``drv_name`` - имя драйвера , берется из описания драйвера базы - ``IP_Host`` - ip или имя хоста с базой; - ``Port`` - порт, на котором будет слушать сервис . По умолчанию 8080; - ``db_name`` - имя базы данных. - Указать ``driver-class-name`` - имя класса , берется из описания драйвера базы - Указать переменную ``file_path`` - наименование файла с описанием запросов, по умолчанию ``sample.yaml``. - Указать переменные ``execquery`` - сопоставление operationId из файла с описанием запросов c файлом обработчиком, по умолчанию ``sample.peb``. *Установка* Для установки необходимо выполнить следующие действия: 1. Перейти в директорию с файлом ``docker-compose.yml`` Наример:: cd ~/direct 2. Поднять сервис конечных точек командой:: docker-compose up -d 3. Проверить установку следующей командой:: docker ps В списке запущенных образов должен присутствовать ``rest-adapter`` Настройка сервера конечных точек API ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Детальные примеры описания REST API и pebble-шаблонов приведены в документе «Руководство программиста». **Kонфигурационный файл с конечными точками** Для доступа к конечным точкам необходим отредактировать файл ``sample.yaml``, описав все необходимые API в соответствии с приведенным в файле шаблоном (шаблон соответствует спецификации OpenAPI 3.0 https://swagger.io/specification/ ). Секция: ``servers``: - ``url: /`` - корневой путь сервера. Секция: ``paths`` - ``/test/query`` - путь запроса; - тип запроса - ``get`` , ``post`` и т.д. ; - ``operationId`` - определение ``operationId`` для связки с темплейт файлом; - ``responses`` - описание параметров ответа. **Шаблоны** Для парсинга и обогащениe запросов используются шаблоны. В качестве языка шаблонов используется pebble. С дополнениями: - функция ``xpath(expression)`` - возвращает вычисленное выражение на входящем документе; - тэг ``{% mtom %} some content {% endmtom %}`` - отправляет внутренность вложением; - функция ``sql(var, sql, param1, param2, ...)`` - выполняет ``sql`` с параметрами, результат записывается в переменную ``var``. Пример формирования шаблона приведен в файле ``sample.peb``.