Создание системных и пользовательских сервисов обслуживания#
Для автоматического перезапуска брокеров Platform V Corax / Apache Kafka и Zookeeper в случае перезагрузки сервера и корректной работы скриптов Ansible необходимо перед установкой создать системные или пользовательские сервисы обслуживания.
Для создания системных сервисов обслуживания:
Необходимо выдать права пользователю (например, kafka) на запуск, остановку и редактирование сервиса.
Для этого под пользователем root добавить строки в файл /etc/sudoers:
Для Kafka:
kafka ALL= NOPASSWD: /bin/systemctl start kafka
kafka ALL= NOPASSWD: /bin/systemctl stop kafka
kafka ALL= NOPASSWD: /bin/systemctl status kafka
kafka ALL= NOPASSWD: /bin/systemctl restart kafka
kafka ALL= NOPASSWD: /bin/systemctl enable kafka
kafka ALL= NOPASSWD: /bin/systemctl disable kafka
kafka ALL= NOPASSWD: /bin/systemctl daemon-reload
kafka ALL= NOPASSWD: /bin/sudoedit /etc/systemd/system/kafka.service
Для Zookeeper:
kafka ALL= NOPASSWD: /bin/systemctl start zookeeper
kafka ALL= NOPASSWD: /bin/systemctl stop zookeeper
kafka ALL= NOPASSWD: /bin/systemctl status zookeeper
kafka ALL= NOPASSWD: /bin/systemctl restart zookeeper
kafka ALL= NOPASSWD: /bin/systemctl enable zookeeper
kafka ALL= NOPASSWD: /bin/systemctl disable zookeeper
kafka ALL= NOPASSWD: /bin/systemctl daemon-reload
kafka ALL= NOPASSWD: /bin/sudoedit /etc/systemd/system/zookeeper.service
Для создания пользовательских сервисов обслуживания:
Необходимо добавить вашего пользователя в список исключений, чтобы пользовательский сервис приложения не завершался принудительно.
Для этого под пользователем root:
Добавить строки с логином пользователей в файл
/etc/systemd/logind.conf:
KillExcludeUsers=kafka
Дать возможность пользовательским сервисам работать как долговременные, выполнив команды:
systemctl restart systemd-logind
loginctl enable-linger kafka
Создание системных и пользовательских сервисов обслуживания с помощью Jenkins Job#
Необходимо заполнить настройки inventory из раздела Настройка inventory.
Выбрать соответствующий playbook в Jenkins Job в параметре playbook:
zk_kafka_system_service.yml— создание системного сервиса обслуживания;zk_kafka_user_service.yml— создание пользовательского сервиса обслуживания.
Создание системного сервиса обслуживания Zookeeper с помощью ansible#
Под пользователем kafka выполните действия:
Создайте файл сервиса
zookeeper.service:
sudo /bin/sudoedit /etc/systemd/system/zookeeper.service
Заполните созданный файл:
[Unit]
Description=Zookeeper service
After=local-fs.target network.service
[Service]
WorkingDirectory={{ zookeeper.installdir }}
Type=simple
User=kafka
ExecStart={{ zookeeper.installdir }}/bin/zookeeper-server-start.sh {{ zookeeper.installdir }}/config/zookeeper.properties
ExecStop={{ zookeeper.installdir }}/bin/zookeeper-server-stop.sh
LimitNOFILE=512000
LimitNPROC=512000
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
, где zookeeper.installdir — абсолютный путь до директории установки Zookeeper.
Для инициализации сервиса выполните команду:
sudo systemctl daemon-reload
Создание пользовательского сервиса обслуживания Zookeeper с помошью ansible#
Под пользователем kafka выполните следующие действия:
Создате файл сервиса
~/.config/systemd/user/zookeeper.serviceсо следующим содержимым:
[Unit]
Description=Zookeeper service
[Service]
WorkingDirectory={{ zookeeper.installdir }}
Type=simple
ExecStart={{ zookeeper.installdir }}/bin/zookeeper-server-start.sh {{ zookeeper.installdir }}/config/zookeeper.properties
ExecStop={{ zookeeper.installdir }}/bin/zookeeper-server-stop.sh
LimitNOFILE=512000
LimitNPROC=512000
Restart=on-failure
RestartSec=30
[Install]
WantedBy=default.target
, где zookeeper.installdir — абсолютный путь до директории установки Zookeeper.
Для инициализации сервиса выполните команду:
sudo systemctl --user daemon-reload
Создание системного сервиса обслуживания Kafka с помощью ansible#
Под пользователем kafka выполните следующие действия:
Создайте файл сервиса:
sudo /bin/sudoedit /etc/systemd/system/kafka.service
Заполните созданный файл:
[Unit]
Description=Apache Kafka service
After=local-fs.target network.service
[Service]
WorkingDirectory={{ kafka.installdir }}
Type=simple
User=kafka
ExecStartPre=/bin/sleep 10
ExecStart={{ kafka.installdir }}/bin/kafka-server-start.sh {{ kafka.installdir }}/config/server.properties
ExecStop={{ kafka.installdir }}/bin/kafka-server-stop.sh
LimitNOFILE=512000
LimitNPROC=512000
Restart=on-failure
RestartSec=30
[Install]
WantedBy=default.target
, где kafka.installdir — абсолютный путь до директории установки Kafka.
Для инициализации сервиса выполните команду:
sudo systemctl daemon-reload
Создание пользовательского сервиса обслуживания Kafka с помошью ansible#
Под пользователем kafka выполните следующие действия:
Создате файл сервиса
~/.config/systemd/user/kafka.serviceсо следующим содержимым:
[Unit]
Description=Apache Kafka service
[Service]
WorkingDirectory={{ kafka.installdir }}
Type=simple
ExecStartPre=/bin/sleep 10
ExecStart={{ kafka.installdir }}/bin/kafka-server-start.sh {{ kafka.installdir }}/config/server.properties
ExecStop={{ kafka.installdir }}/bin/kafka-server-stop.sh
LimitNOFILE=512000
LimitNPROC=512000
Restart=on-failure
RestartSec=30
[Install]
WantedBy=default.target
, где kafka.installdir — абсолютный путь до директории установки Kafka.
Для инициализации сервиса выполните команду:
sudo systemctl --user daemon-reload