我正在consul
尝试建立一个小型 CoreOS 集群。如果我将以下文件保存到/etc/systemd/system/consul.service
,启用服务并重新启动 VM,集群中的所有 3 个 vm 将愉快地正常启动并加入到一起
[Unit]
Description=consul
After=etcd2.service
After=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill consul
ExecStartPre=-/usr/bin/docker rm consul
ExecStart=/usr/bin/docker run -d --name consul --network host consul agent -server -bootstrap-expect=3 -data-dir /tmp/consul -bind BIND_IPADDR --node NODE_NAME -retry-join IPADDR1 -retry-join IPADDR2
# ExecStop=/usr/bin/docker container exec consul consul leave
# ExecStopPost=/usr/bin/docker container stop consul
# ExecStopPost=/usr/bin/docker container rm consul
[Install]
WantedBy=multi-user.target
但是,如果我从ExecStop
命令中删除注释,则启动将失败,因为在 vms 重新启动后没有 consul 容器正在运行。systemctl --failed
虽然没有报告任何服务失败。
我究竟做错了什么?我误会了ExecStop
吗?Consul
?