如何使用 Rocket 运行 Etcd

How to run Etcd with Rocket

现在我正在使用 systemd 和本地二进制文件 运行 Etcd。我想 运行 etcd 和 rkt,仍然通过 systemd,所以我不需要 'manually' 使用二进制文件服务下载二进制文件。

# /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 时有一些 issues。我将如何调试这个东西,以便我知道发生了什么。第一天搞砸火箭!谢谢!

我遇到的错误

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.

如果您是 运行ning 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 状态 -- 但这些应该是一个很好的起点。