Ubuntu 16 - Как заставить Systemd продолжать попытки запуска службы, даже если условие запуска не выполнено? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть файл системы sytemd для kafka, как показано ниже.

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
After=network.target remote-fs.target kafka-zookeeper.service

[Service]
Type=simple
User=nano
Group=nano
Environment=JAVA_HOME=/usr/java/jdk1.8.0_102
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target
RestartSec=2s
Restart=always

Файл модуля Zookeeper.

[Service]
Type=simple
User=nano
Group=nano
Environment=JAVA_HOME=/usr/java/jdk1.8.0_102
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
RestartSec=2s
Restart=always

Иногда я наблюдаю, что kafka находится в остановленном состоянии, и делаю systemctl status kafka.service, показывая мне следующее сообщение

ubuntu@platform3:/usr/lib/systemd/system$ sudo systemctl status kafka.service
● kafka.service - Kafka Service
   Loaded: loaded (/usr/lib/systemd/system/kafka.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
Condition: start condition failed at Mon 2019-03-25 17:56:30 UTC; 10h ago

При проверке журналов кажется, что при выполнении sudo systemctl start kafka.service время zookeeper не запускалось.Таким образом, предварительное условие не выполнялось и кафка не запускалась.

Но через некоторое время зоокейпер заработал, но даже тогда Кафка не запустился.Может кто-нибудь сообщить мне, есть ли способ заставить systemd продолжать пытаться запустить kafka, а не просто останавливаться один раз, если не выполняются предварительные условия, как это происходит сейчас?

1 Ответ

0 голосов
/ 26 марта 2019

Используйте kafka-zookeeper.service в Require= вместо After=. Это будет сделано, чтобы ваш сервис сначала посмотрел, работает ли zookeeper, и если он не работает, он попытается запустить его.

На основании документации: http://manpages.ubuntu.com/manpages/bionic/man5/systemd.unit.5.html

...