单个节点的 Nomad 配置作为生产服务器和客户端

Chr*_*ski 2 nomad

我怎样才能建立游牧到行动一样,它的发展模式,而是因此它仍然存在数据来运行这个作为生产安装?就是这样nomad agent -dev

我是否重复运行客户端/服务器进程?或者我可以将它配置为同时运行吗?

所以本质上是一个单节点游牧集群

小智 5

Production Nomad 并没有像预期的那样真正“保留”数据。它通过共识协议在集群内共享数据。每个服务器都保留自己的“世界状态”副本,然后与其对等方“闲聊”以注意它需要进行的任何更改。如果有某种程度的混乱或需要打破平局,“领导者”会提供答案。如果集群中的服务器出现故障,此模式将创建冗余和弹性。Consul 也被设计为以几乎相同的方式工作。

“开发”模式本质上是一个单服务器集群,同时也是一个客户端。出于多种原因,您确实不想在生产中执行此操作。主要是,服务器集群旨在监督和管理其关联客户端上的资源和分配。随着作业的数量和资源需求的增加,将它们在生产中并置在同一台机器上可能会产生各种问题。您最不想要的就是您的工作与监督它的流程争夺资源。

推荐的基线生产设置是 3 个 Nomad 服务器和 2 个 Nomad 客户端,总共 5 个实例。这为您提供了 Nomad 生产部署中预期的最低限度的隔离和冗余量。

我建议尽早选择 Nomad 服务器的数量(推荐 3 或 5 个,需要奇数才能正确选举领导者)并加强配置,以便服务器永远不会意外进入和退出存在。不要使用自动缩放或动态寻址方案。相反,锁定服务器的分配 IP、主机名等,这样如果它们需要重新启动或出于某种原因脱机,它们就会完全像以前一样出现。否则,如果其中一台服务器移动,您可能会破坏服务器共识。对于 Nomad 客户端,我通常使用手动扩展组,允许我增加或减少 Nomad 客户端的数量。如果您可以很好地监控资源以将信号提供给定标器,您可能可以使用自动缩放。需要做一些工作才能正确缩小规模(即


nin*_*ble 5

由于另一个答案在其批评中是有效的,但没有费心回答问题,因此您可以为 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"
Run Code Online (Sandbox Code Playgroud)

数据将保留在data_dir/opt/nomad在此示例配置中)

Linux服务

然后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
Run Code Online (Sandbox Code Playgroud)

最后开始 systemctl enable nomad && systemctl start nomad