现在我使用systemd来运行带有本地二进制文件的Etcd。我想用rkt运行etcd,仍然通过systemd,所以我不需要用binaries服务"手动"下载二进制文件。
# /etc/systemd/system/etcd2.service
[Unit]
After=binaries.service
Requires=binaries.service
[Service]
User=core
Type=notify
EnvironmentFile=/home/core/environment
ExecStart=/opt/bin/etcd
Restart=always
LimitNOFILE=40000
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
我想做一些像。这样对吗?我还缺什么吗?
# /etc/systemd/system/etcd2.service
[Unit]
# Wait for networking
Requires=network-online.target
After=network-online.target
[Service]
User=core
Type=notify
EnvironmentFile=/home/core/environment
ExecStart==/usr/bin/rkt run --inherit-env --port=http:2380 --port=http:2379 quay.io/coreos/etcd:v2.3.3
Restart=always
LimitNOFILE=40000
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
我还发现etcd在火箭运行时关于记录到stout/stderr有一些问题。我怎么调试这个东西,这样我就知道发生了什么。第一天玩火箭!谢谢!
我得到的错误
Sep 21 18:08:04 master systemd[1]: etcd2.service: Unit entered failed state.
Sep 21 18:08:04 master systemd[1]: etcd2.service: Failed with result 'exit-code'.
Sep 21 18:08:04 master systemd[1]: etcd2.service: Service hold-off time over, scheduling restart.
Sep 21 18:08:04 master systemd[1]: Stopped etcd2.service.
Sep 21 18:08:04 master systemd[1]: etcd2.service: Start request repeated too quickly.
Sep 21 18:08:04 master systemd[1]: Failed to start etcd2.service.
如果你运行的是CoreOS,有一个'etcd-wrapper'脚本和'etcd-wrapper'。Service’systemd单元,它完成这个任务(从RKT容器运行etcd)。
在撰写本文时,包装器&单元文件仅在CoreOS beta(1153.4.0)和alpha(1164.1.0)中提供。
如果你正在运行不同的版本,或者根本没有运行CoreOS -你可以直接从:https://github.com/coreos/coreos-overlay/tree/master/app-admin/etcd-wrapper/files
获取脚本。包装器脚本仍处于alpha/beta状态,但这应该是一个很好的起点。