【问题标题】:Ubuntu 16 - How to make Systemd keep on trying to start service even when start condition failed?Ubuntu 16 - 即使启动条件失败,如何让 Systemd 继续尝试启动服务?
【发布时间】:2019-08-16 10:09:48
【问题描述】:

我有一个用于 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 没有运行。所以前提条件不满足,kafka没有启动。

但是过了一段时间,zookeeper 启动并运行了,但即便如此,Kafka 也没有启动。有人可以告诉我是否有办法让 systemd 继续尝试启动 kafka,而不是像现在这样在不满足先决条件时停止一次?

【问题讨论】:

    标签: ubuntu ubuntu-16.04 systemd


    【解决方案1】:

    在Require= 中使用kafka-zookeeper.service 而不是After=。这样做,您的服务将首先查看 zookeeper 是否正在运行,如果它没有运行,它将尝试启动它。

    基于文档:http://manpages.ubuntu.com/manpages/bionic/man5/systemd.unit.5.html

    【讨论】:

    • 与其启动zookeeper可以kafka等它启动吗?
    • 那么你可以像你一样做After=,但是去[Service]下的Restart=always,这样就可以了,systemd会自动重启kafka.service直到它启动成功。文档中还有一些与重启相关的其他选项,您应该阅读它们。
    • 我添加了Restart=Always 它没有帮助。如果前置条件失败,则Restart= 不会生效。 lists.freedesktop.org/archives/systemd-devel/2014-November/…
    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多