Создание сервисов обслуживания#

Для автоматического перезапуска ArtemisMQ в случае перезагрузки сервера и корректной работы скриптов Ansible необходимо перед установкой компонента создать системный или пользовательский сервисы обслуживания.

Пререквизиты для создания системного сервиса обслуживания#

Необходимо выдать права пользователю (например, artemis) на запуск, остановку и редактирование сервиса. Данный процесс описан в разделе Подготовка окружения, подраздел Настройка серверов Artemis MQ, п.4.

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

Необходимо добавить вашего пользователя в список исключений, чтобы пользовательский сервис приложения не завершался принудительно.

Для этого под пользователем root:

  1. Добавить строки с логином пользователей в файл /etc/systemd/logind.conf:

KillExcludeUsers=artemis
  1. Дать возможность пользовательским сервисам работать как долговременные, выполнив команды:

systemctl restart systemd-logind
loginctl enable-linger artemis

Ручное создание системного сервиса#

Для успешной передачи сообщений на другие nods кластера в момент остановки брокера, рекомендуется устанавливать увеличенное значение TimeoutStopSec в зависимости от конфигурации кластера и количества сообщений (например: 10min).

Под пользователем artemis выполнить следующие действия:

  1. Создать файл сервиса. Для этого выполнить команду sudo /bin/sudoedit /etc/systemd/system/artemis.service.

  2. При выполнении команды будет создан файл artemis.service. Необходимо наполнить его следующим содержимым:

[Unit]
Description=ActiveMQ Artemis service
After=local-fs.target network.service
    
[Service]
WorkingDirectory=/opt/Apache/artemis/broker
Type=simple
User=artemis
ExecStart=/opt/Apache/artemis/broker/bin/artemis run
LimitNOFILE=512000
LimitNPROC=512000
Restart=on-failure
RestartSec=30
TimeoutStopSec=10min
    
[Install]
WantedBy=default.target

Обновите список сервисов:

sudo systemctl daemon-reload

Ручное создание пользовательского сервиса обслуживания artemis#

Под пользователем artemis выполнить следующие действия:

  1. Создать файл сервиса ~/.config/systemd/user/artemis.service со следующим содержимым:

[Unit]
Description=ActiveMQ Artemis service
    
[Service]
WorkingDirectory=/opt/Apache/artemis/broker
Type=simple
ExecStart=/opt/Apache/artemis/broker/bin/artemis run
LimitNOFILE=512000
LimitNPROC=512000
Restart=on-failure
RestartSec=30
TimeoutStopSec=10min
    
[Install]
WantedBy=default.target
  1. Для инициализации сервиса выполнить команду sudo systemctl --user daemon-reload.

Автоматическое создание системного и пользовательского сервисов обслуживания#

Для автоматического создания сервисов обслуживания необходимо использовать Jenkins Job artemis_custom и соответствующий playbook ansible:

  • artemis_system_service.yml — создание системного сервиса для SMBX;

  • artemis_user_service.yml — создание пользовательского сервиса для SMBX;

Это можно сделать после настройки inventory как в рамках ручной установки с использованием Ansible, так и автоматической установки с использованием Jenkins.