Создание сервисов обслуживания#
Для автоматического перезапуска ArtemisMQ в случае перезагрузки сервера и корректной работы скриптов Ansible необходимо перед установкой компонента создать системный или пользовательский сервисы обслуживания.
Пререквизиты для создания системного сервиса обслуживания#
Необходимо выдать права пользователю (например, artemis) на запуск, остановку и редактирование сервиса. Данный процесс описан в разделе Подготовка окружения, подраздел Настройка серверов Artemis MQ, п.4.
Пререквизиты для создания пользовательского сервиса обслуживания#
Необходимо добавить вашего пользователя в список исключений, чтобы пользовательский сервис приложения не завершался принудительно.
Для этого под пользователем root:
Добавить строки с логином пользователей в файл
/etc/systemd/logind.conf:
KillExcludeUsers=artemis
Дать возможность пользовательским сервисам работать как долговременные, выполнив команды:
systemctl restart systemd-logind
loginctl enable-linger artemis
Ручное создание системного сервиса#
Для успешной передачи сообщений на другие nods кластера в момент остановки брокера, рекомендуется устанавливать увеличенное значение TimeoutStopSec в зависимости от конфигурации кластера и количества сообщений (например: 10min).
Под пользователем artemis выполнить следующие действия:
Создать файл сервиса. Для этого выполнить команду
sudo /bin/sudoedit /etc/systemd/system/artemis.service.При выполнении команды будет создан файл 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 выполнить следующие действия:
Создать файл сервиса
~/.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
Для инициализации сервиса выполнить команду
sudo systemctl --user daemon-reload.
Автоматическое создание системного и пользовательского сервисов обслуживания#
Для автоматического создания сервисов обслуживания необходимо использовать Jenkins Job artemis_custom и соответствующий playbook ansible:
artemis_system_service.yml — создание системного сервиса для SMBX;
artemis_user_service.yml — создание пользовательского сервиса для SMBX;
Это можно сделать после настройки inventory как в рамках ручной установки с использованием Ansible, так и автоматической установки с использованием Jenkins.