1

现在我正在使用 systemd 来运行带有本地二进制文件的 Etcd。我想用 rkt 运行 etcd,仍然通过 systemd,所以我不需要使用二进制服务“手动”下载二进制文件。

# /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.
4

1 回答 1

1

如果您正在运行 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/文件

包装脚本仍处于 alpha/beta 状态——但这些应该是一个很好的起点。

于 2016-09-21T19:31:23.500 回答