现在我正在使用systemd运行带有本地二进制文件的Etcd。我想用rkt运行etcd,仍然是系统的,所以我不需要“手动”下载带有二进制服务的二进制文件。
# /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
我还发现,当火箭关于登录到stout / stderr时,etcd有一些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.
答案 0 :(得分: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/files
包装器脚本仍然处于alpha / beta状态 - 但这些应该是一个很好的起点。