.. _agent_set_start: Настройка и запуск Агента СМЭВ4 ================================ Порядок загрузки данных и программ ------------------------------------ Администратор УВ осуществляет развёртывание, запуск и настройку Агента СМЭВ4 с помощью данного руководства. .. _start_without_docker: Подготовка и настройка системы для запуска Агента СМЭВ4 без использования docker ---------------------------------------------------------------------------------- Состав и содержание дистрибутивного пакета ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Состав дистрибутива Агента СМЭВ4 в архиве с бинарными файлами (``/distr/einfahrt``): - ``/distr/einfahrt/app/app.jar`` – исполняемый файл; - ``/distr/einfahrt/csp-5.0.11455.tar.gz`` – дистрибутив CryptoPro CSP; - ``/distr/einfahrt/bellsoft-jdk17.0.7-linux-amd64.tar.gz`` – дистрибутив Java. .. attention:: Присутствующий в пакете дистрибутив CryptoPro CSP предназначен для установки в ОС CentOS, RedOS, ALT SP Server 10. Для Astra Linux, необходимо загрузить с сайта производителя https://cryptopro.ru/sites/default/files/private/csp/50/11455/linux-amd64_deb_astrasign.tgz дисрибутив CryptoPro CSP, соответствующий используемой операционной системе. Путь ``/distr/einfahrt`` указан в качестве примера. Допустимо использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды. .. _pre_requisites: Предварительные операции (установка "пре-реквизитов") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Перед запуском Агента СМЭВ4 выполнить от имени пользователя **root** либо используя команду sudo следующие действия: 1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать Агент СМЭВ4. Создать каталог /distr/einfahrt, владельцем каталога назначить пользователя {{user}} Создать каталог /distr/einfahrt/app, скопировать в него исполняемый файл Агента app.jar из дистрибутивного пакета. 2. Установить java .. code-block:: bash cd /distr/einfahrt tar zxvf bellsoft-jdk17.0.7-linux-amd64.tar.gz 3. Установить системные переменные .. code-block:: bash export JAVA_HOME=/distr/einfahrt/jdk-17.0.7 export PATH=$PATH:$JAVA_HOME/bin Переменные должны устанавливаться автоматически также после перезагрузки сервера. Для этого рекомендуется внести данную настройку в **profile** ОС (/etc/profile.d). 4. Установить CryptoPro CSP: При установке на CentOS, RedOS: .. code-block:: bash cd /distr/einfahrt tar -xzvf csp-5.0.11455.tar.gz rm -f csp-5.0.11455.tar.gz cd csp-5.0.11455 yum -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm ./install.sh cd .. При установке на Astra Linux: .. code-block:: bash cd /distr/einfahrt tar -xzvf linux-amd64_deb_astrasign.tgz rm -f linux-amd64_deb_astrasign.tgz cd linux-amd64_deb apt -y install lsb-cprocsp-base*.deb lsb-cprocsp-rdr-64*.deb lsb-cprocsp-kc1-64*.deb lsb-cprocsp-capilite-64*.deb lsb-cprocsp-devel*.deb lsb-cprocsp-kc2-64*.deb cprocsp-curl-64*.deb ./install.sh cd .. При установке на ALT 8 SP Server 10: .. code-block:: bash cd /distr/einfahrt tar -xzvf csp-5.0.11455.tar.gz rm -f csp-5.0.11455.tar.gz cd csp-5.0.11455 apt-get -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm ./install.sh cd .. При наличии лицензионного кода CryptoPro CSP выполнить команду: .. code-block:: bash sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set {{cprocsp_license_code}} В случае отсутствия лицензионного кода, CryptoPro CSP будет работать в режиме trial лицензии. .. attention:: Срок действия trial лицензии – 90 дней с момента установки CryptoPro CSP. Для сохранения работоспособности Агента СМЭВ4 по окончании данного периода, необходимо приобрести лицензию на CryptoPro CSP и внести её в систему как указано выше. 5. Установить контейнер ключа CryptoPro в директорию ``/var/opt/cprocsp/keys/{{user}}/``. Пользователь {{user}} должен быть владельцем данной директории и файлов в ней. 6. Выложить в каталог ``/distr/enfahrt`` конфигурационный файл ``application.yml``, подготовленный согласно описания в разделе :numref:`config_description`. 5. В файл ``/etc/hosts`` добавить записи, соответствующие адресам серверов аутентификации: .. code-block:: bash 172.20.59.5 podd.gosuslugi.ru 172.20.59.5 podd-cross.gosuslugi.ru 109.207.15.26 podd1.gosuslugi.ru 109.207.15.58 podd2.gosuslugi.ru 109.207.15.154 podd3.gosuslugi.ru 109.207.15.186 podd4.gosuslugi.ru 109.207.15.26 podd1-cross.gosuslugi.ru 109.207.15.58 podd2-cross.gosuslugi.ru 109.207.15.154 podd3-cross.gosuslugi.ru 109.207.15.186 podd4-cross.gosuslugi.ru Или выполнить команды: .. code-block:: bash echo -e “\n\n# Адреса сервиса аутентификации Агента СМЭВ4” echo -e “\n\n172.20.59.5 podd.gosuslugi.ru” >> /etc/hosts echo -e “172.20.59.5 podd-cross.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.26 podd1.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.58 podd2.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.154 podd3.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.186 podd4.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.26 podd1-cross.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.58 podd2-cross.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.154 podd3-cross.gosuslugi.ru” >> /etc/hosts echo -e “109.207.15.186 podd4-cross.gosuslugi.ru” >> /etc/hosts .. _agent_start: Запуск Агента СМЭВ4 ~~~~~~~~~~~~~~~~~~~ Убедитесь, что пользователь {{user}} имеет доступ к директории, в которой установлен Агент СМЭВ4 (``/distr/einfahrt``). Пример раздела конфигурации скрипта для запуска Агента СМЭВ4 с использованием сервиса **systemd** Данный файл, с названием ``einfahrt.service``, необходимо сохранить в каталог ``/etc/systemd/system/``, указав, при необходимости, корректные пути к файлам: .. code-block:: bash [Unit] Description="Service for einfahrt" After=syslog.target [Service] Type=simple WorkingDirectory=/distr/einfahrt LimitNOFILE=1048576:1048576 # Важно! Запуск должен производиться от имени того пользователя, для которого ранее были выложены ключи CryptoPro! User={{user}} # указать пользователя Group={{user_group}} # указать группу Environment="JAVA_HOME=/distr/einfahrt/jdk-17.0.7" Environment="JDK_JAVA_OPTIONS=--add-exports=java.base/sun.security.util=ALL-UNNAMED \ --add-exports=java.base/sun.security.x509=ALL-UNNAMED \ --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED \ --add-exports=java.base/sun.security.provider=ALL-UNNAMED \ --add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED \ --add-exports=java.base/sun.net=ALL-UNNAMED \ --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED \ --add-opens=java.base/java.lang=ALL-UNNAMED \ --add-opens=java.base/java.nio=ALL-UNNAMED \ --add-opens=java.xml/org.w3c.dom=ALL-UNNAMED \ --add-opens=java.base/java.util=ALL-UNNAMED \ -Dio.netty.tryReflectionSetAccessible=true \ -Dsaffron.default.charset=UTF-16LE \ -Dsaffron.default.collation.name='UTF-16LE$en_US' \ -Dsaffron.default.nationalcharset=UTF-16LE \ -XX:MaxRAMPercentage=80.0" ExecStart=/distr/einfahrt/jdk-17.0.7/bin/java -jar app/app.jar [Install] WantedBy=multi-user.target Далее от имени пользователя **root** или используя sudo выполнить команду по включению, запуску сервиса и проверке его статуса: .. code-block:: bash sudo systemctl daemon-reload sudo systemctl enable einfahrt sudo systemctl start einfahrt sudo systemctl -l status einfahrt .. _agent_check: Проверка работоспособности Агента СМЭВ4 после включения и запуска сервиса ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для проверки соединения Агента с Ядром ПОДД необходимо выполнить команду с использованием утилиты curl. .. note:: Команда выполняется под ROOT-пользователем, или через SUDO. Если утилита Curl не установлена необходимо ее установить из базового репозитория для Astra Linux 1.7 SE (Воронеж, Смоленск) командой: .. code-block:: bash sudo apt-get install curl для RedOS 7.3 .. code-block:: bash sudo dnf install curl Проверка корректной установки Агента СМЭВ4 осуществляется командой: .. code-block:: bash curl -X POST 'http://agent-ip-address:8192/query?async=false' -H "Accept-Version: 1" -H "Content-Type: application/json" -d '{"sql": {"sql": "select 1"}}' Вывод должен быть следующим: .. code-block:: bash { "created_at": "YYYY-MM-DD HH-MM-SS", "query_id": "", "meta": [ { "name": "EXPR$0", "type": "INTEGER" } ], "rows": [ [ "1" ] ] } .. _log_rotate: Настройка ротации логов (опционально) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Во избежание переполнения диска лог-файлами, рекомендуется настроить ротацию лог-файлов **systemd** сервиса. Настройка логирования осуществляется с помощью файлов конфигурации **logrotate** и **systemd** сервиса. Если этих файлов не существует, их необходимо создать. Первоначально необходимо установить пакет **logrotate**, для rpm-base дистрибутивов необходимо выполнить команду: .. code-block:: bash sudo yum install logrotate Добавьте в файл **systemd** сервиса (``/etc/systemd/system/einfahrt.service``) следующие настройки логирования: .. code-block:: bash ... [Service] Type=simple StandardOutput=append:/var/log/{{ file_name }} StandardError=append:/var/log/{{ file_name }} ... Создайте файл конфигурации **logrorate** (поместить файл в ``/etc/logrotate.cron/einfahrt.conf``) и поместите в него следующие строки: .. code-block:: bash /var/log/{{ file_name }} { rotate {{ rotate }} size {{ file_size }} create nocompress copytruncate } где: - ``rotate`` – какое количество лог файлов оставлять, - ``file_size`` – размер лог-файла при котором будет происходить ротация. Создайте файл со скриптом запуска утилиты **logrotate**, поместите скрипт по пути ``/etc/logrotate.cron/einfahrt.sh`` .. code-block:: bash #!/bin/bash /usr/sbin/logrotate /etc/logrotate.cron/einfahrt.conf Добавьте права на запуск командой: .. code-block:: bash chmod +x /etc/logrotate.cron/einfahrt.sh Создайте правила cron, создайте файл ``/etc/cron.d/einfahrt`` и поместите в него приведенную ниже строку: .. code-block:: bash */1 * * * * root /etc/logrotate.cron/einfahrt_logrotate.sh Далее перезагрузите **systemd** сервис: .. code-block:: bash sudo systemctl daemon-reload sudo systemctl restart einfahrt .. _start_with_docker: Настройка и запуск Агента СМЭВ4 с использованием docker -------------------------------------------------------- Предварительные условия ~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. На сервере должен быть установлен docker версии не ниже 20.10.12. 2. Создан пользователь, который будет запускать Агент СМЭВ4. 3. Этот пользователь должен иметь права на загрузку докер-образов и запуск/остановку контейнеров (т.е. добавлен в группу docker). Настройка ротации лог-файлов в docker (опционально) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Во избежание переполнения диска лог-файлами, рекомендуется настроить ротацию лог-файлов контейнеров в docker. Настройка логирования в Docker осуществляется с помощью файла конфигурации ``/etc/docker/daemon.json``. Если этого файла не существует, его необходимо создать. Добавьте в файл следующие настройки логирования: .. code-block:: json { "log-opts": { "max-file": "3", "max-size": "100m" } } где: - ``max-file`` – ограничение по количеству файлов (настройки ротации). Максимальное количество файлов журнала, которые могут быть созданы. При превышении количества самый старый файл удаляется. Действует только при установленном параметре ``max-size``. Положительное целое число. По умолчанию 1; - ``max-size`` – устанавливает ограничение по размеру лог-файла (k, m или g). По умолчанию -1 (не ограничено). Состав и содержание дистрибутивного пакета ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ниже приведён состав дистрибутива Агента СМЭВ4 (``/distr/einfahrt``) для Docker: - ``/distr/einfahrt/image.tgz`` – docker image для загрузки в систему. Включает в себя также необходимую версию CryptoPro. - ``/distr/einfahrt/run_agent.sh`` – скрипт для запуска и перезапуска агента. - ``/distr/einfahrt/stop.sh`` – скрипт для остановки агента. - ``/distr/einfahrt/log_save.sh`` – скрипт для сохранения лога агента в файл. - ``/distr/einfahrt/log.sh`` – скрипт для просмотра лога агента в реальном времени. - ``/distr/einfahrt/diag.sh`` – скрипт для сбора диагностической информации при обращении в службу поддержки. Путь ``/distr/einfahrt`` использован для примера, не является фиксированным и может быть изменен на любой другой по желанию пользователя, с соответствующим внесением корректировок при его упоминаниях ниже. Ниже в качестве примера будет использоваться данный путь. .. _pre_start_docker: Подготовка к запуску ~~~~~~~~~~~~~~~~~~~~ Для запуска Агента СМЭВ4 необходимо после распаковки пакета сформировать конфигурационный файл ``application.yml``, как указано в :numref:`config` , и сохранить его в каталог ``/distr/einfahrt``. В каталоге ``/distr/einfahrt``: - создать подкаталог ``keys``, сохранить в него полученный ключ CryptoPro **в распакованном виде** ; - (только при использовании **https** API gateway) создать подкаталог ``certs``, подготовить файл **cacerts** согласно :numref:`api_gateway`, сформированный файл сохранить в каталог ``/distr/einfahrt/certs``. При наличии файла расширенных настроек логирования ``customLogLevels.xml`` сохранить его в каталог ``/distr/einfahrt``. Для запуска Агента СМЭВ4 под docker, полученный docker образ необходимо загрузить в локально установленный docker на машине, где будет работать Агент СМЭВ4. Для этого необходимо сохранить архив с образом на локальный диск этой машины и выполнить команду: .. code-block:: bash docker load < image.tgz где ``image.tgz`` – имя полученного архива с docker образом Агента СМЭВ4 из пакета поставки. Загрузка должна завершиться без ошибок. Проверить успешность загрузки можно командой: .. code-block:: bash docker images | grep einfahrt Вывод будет содержать информацию следующего вида: .. code-block:: bash einfahrt latest c7511824117e 5 days ago 1.2G .. _start_docker: Запуск Агента СМЭВ4 ~~~~~~~~~~~~~~~~~~~~ Для запуска Агента СМЭВ4 используется скрипт ``run_agent.sh``, входящий в пакет поставки. Скрипт не требует указания параметров. При выполнении всех шагов, перечисленных в :numref:`pre_start_docker`, Агент СМЭВ4 будет успешно запущен, с сообщением о доступных портах. При повторном выполнении скрипта контейнер будет остановлен и запущен заново. Для сохранения лога Агента СМЭВ4 в файл, запустите скрипт ``log-save.sh``. Лог будет сохранен в файле ``log-дата-время.txt``. Для просмотра лога в режиме реального времени запустите скрипт ``log.sh``. В случае необходимости сбора диагностической информации для отправки в службу поддержки запустите скрипт ``diag.sh``. Остановка контейнера осуществляется скриптом ``stop.sh``. .. note:: В ряде случаев может наблюдаться остановка контейнера через несколько секунд после запуска, с сообщением в логе ``java.lang.IllegalStateException: Ошибка вызова функции acquireContext: 0x8009001a``. В этом случае следует изменить владельца каталога ``keys`` и вложенных подкаталогов и файлов на пользователя с id=1000 (потребуются root права): ``chown -R 1000 keys`` после чего повторить выполнение скрипта запуска контейнера. .. _agent_update: Обновление Агента СМЭВ4 --------------------------- Для обновления версии Агента СМЭВ4 необходимо выполнить следующие шаги: 1. Скачать с `портала ЕСКС `_ образцы файлов конфигурирования нужной версии. 2. Заполнить файл конфигурации ``application.yaml`` актуальными данными в соответствии с описанием :numref:`config`. 3. Из пакета с дистрибутивом скопировать новую версию исполняемого файла Агента ``app.jar`` папку ``/distr/einfahrt/app``, как указано в :numref:`pre_requisites`. 4. Проверить файл ``einfahrt.service`` на соответствие с описанием в :numref:`agent_start` 5. Перезапустить Агент СМЭВ4. .. _cryptopro_lisence: Информация по лицензированию CryptoPro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Входящий в поставку дистрибутив CryptoPro не имеет предустановленной лицензии, и может работать в "пробном режиме" в течение трех месяцев с момента создания образа (не с момента первого запуска!) **Для использования пробной версии CryptoPro не требуется каких-либо дополнительных действий, касающихся лицензирования.** В случае, если имеется в наличии полная лицензия на CryptoPro CSP, предусмотрена возможность передачи номера лицензий CSP при запуске контейнера. При передаче валидной лицензии CryptoPro будет лицензирована на этапе запуска. Для этого необходимо, чтобы текстовый файл, содержащий строку с лицензией на CryptoPro CSP, был при запуске контейнера доступен внутри контейнера по пути ``/egov/csp.lic``. При запуске под docker-ом можно для этого монтировать внешние файлы, содержащие номера лицензии, по указанным выше путям. **Для того, чтобы прилагаемый скрипт запуска применил лицензию CryptoPro, при её наличии, её необходимо поместить в текстовый файл ``licenses/csp.txt``. При отсутствии лицензии и использовании пробной версии CryptoPRO не создавайте указанные файлы.** .. attention:: Срок действия пробной лицензии – 90 дней с момента создания docker image используемого Агента. Для сохранения работоспособности Агента СМЭВ4 по окончании данного периода необходимо приобрести лицензию на CryptoPro CSP и внести ее в систему, как указано выше.