我怎样才能建立游牧到行动一样,它的发展模式,而是因此它仍然存在数据来运行这个作为生产安装?就是nomad agent -dev
。
我是否重复运行客户端/服务器进程?还是可以将其配置为同时运行?
所以本质上是一个单节点游牧集群
答案 0 :(得分:3)
由于另一个答案的批评是有效的,但没有费心回答问题,因此您可以为 linux 做以下事情:
这假设您在 /usr/local/bin/nomad
在 config.hcl
中创建以下 /etc/nomad.d
。
确保替换示例配置中 name
的值。
client {
enabled = true
}
server {
enabled = true
bootstrap_expect = 1
}
datacenter = "dc1"
data_dir = "/opt/nomad"
name = "YOUR_NOMAD_NAME_HERE"
数据将保存在 data_dir
(在此示例配置中为 /opt/nomad
)
然后在nomad.service
内创建一个服务/etc/systemd/system/
:
[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
TasksMax=infinity
[Install]
WantedBy=multi-user.target
最后以 systemctl enable nomad && systemctl start nomad
答案 1 :(得分:2)
Production Nomad并没有真正按照预期的意义“持久化”数据。它通过共识协议在群集内共享数据。每个服务器保留其自己的“世界状况”副本,然后与对等方“闲聊”以注意到其需要进行的任何更改。如果存在某种混乱的情况或需要平局,则由“领导者”提供答案。万一群集中的服务器出现故障,此模式将创建冗余和弹性。领事的工作方式也几乎相同。
“开发”模式本质上是一个单服务器群集,它也是一个客户端。 出于多种原因,您确实不想在生产环境中执行此操作。主要是,服务器群集旨在监视和管理其关联客户端上的资源和分配。将它们放在同一台机器上的生产环境中可能会产生各种问题,因为您增加了工作的数量和资源需求。您想要的最后一件事是您的工作在监督流程的情况下争夺资源。
建议的基准生产设置应为3个Nomad服务器和2个Nomad客户端,总共5个实例。这为您提供了Nomad生产部署中预期的最低限度的隔离和冗余。
我建议尽早选择Nomad服务器的数量(建议选择3或5,需要奇数来正确选举一位领导者)并加强配置,以使服务器永远不会出现意外进入和退出的情况。不要使用自动缩放或动态寻址方案。而是锁定为服务器分配的IP,主机名等,以便如果由于某种原因需要重新启动或脱机,它们将像以前一样正常启动。否则,如果其中一台服务器四处移动,则可能会破坏服务器共识。对于Nomad客户,我通常使用一个手动扩展组,该组允许我放大或缩小Nomad客户的数量。如果您可以充分监视资源以将信号馈送到定标器,则可以使用自动定标。需要进行一些适当的缩放操作(例如,标记为不合格,等待排空),但是放大操作实际上只是配置盒子并运行Nomad客户端。