我在Ubuntu上安装了consul。
consul version
工作正常,consul validate /etc/consul.d/
有效。我正在尝试创建一个服务,该服务基本上应该执行此命令的操作:
consul agent -server -ui -node=test -bootstrap-expect=1 -client=0.0.0.0 -data-dir /opt/consul -config-dir /etc/consul.d/
这里是配置:
/etc/consul.d/consul.hcl:
datacenter="dc1"
data_dir="/opt/consul"
encrypt="UEY...."
/etc/consul.d/server.hcl:
node_name="test"
server=true
bootstrap_expect=1
client_addr="0.0.0.0"
ui_config {
enabled=true
}
/etc/systemd/system/consul.service:
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
在
systemctl start consu
l之后,当我检查status
时,我得到了这个:
● consul.service - "HashiCorp Consul - A service mesh solution"
Loaded: loaded (/etc/systemd/system/consul.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2023-10-18 14:45:40 +03; 5min ago
Docs: https://www.consul.io/
Process: 3172748 ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/ (code=exited, status=1/FAILURE)
Main PID: 3172748 (code=exited, status=1/FAILURE)
systemd[1]: consul.service: Scheduled restart job, restart counter is at 5.
systemd[1]: Stopped "HashiCorp Consul - A service mesh solution".
systemd[1]: consul.service: Start request repeated too quickly.
systemd[1]: consul.service: Failed with result 'exit-code'.
systemd[1]: Failed to start "HashiCorp Consul - A service mesh solution".
有趣的是,如果我手动运行
/usr/bin/consul agent -config-dir=/etc/consul.d/
,效果很好。
我还在
journalctl
日志中发现了一些奇怪的东西,看起来律师没有使用作为ExecStart
参数给出的配置。这是日志示例:
==> Starting Consul agent
..
Node name: '<server name>'
当我使用
ExecStart
中的相同命令手动启动它时,这是正确的:
==> Starting Consul agent...
..
Node name: '<node name in config file>'
我该怎么办?如果有任何反馈,我将不胜感激。
您应该将文件 consul.hcl 和 server.hcl 合并到 consul.hcl:
datacenter="dc1"
data_dir="/opt/consul"
encrypt="UEY...."
node_name="test"
server=true
bootstrap_expect=1
client_addr="0.0.0.0"
ui_config {
enabled=true
}