单个节点作为生产服务器和客户端的 Nomad 配置
Nomad configuration for single node to act as production server and client
我如何设置 Nomad 以与其开发模式相同的方式运行,而不是 运行 作为生产设置以便它持久保存数据?那就是 nomad agent -dev
.
我是否运行客户端/服务器重复处理?或者我可以将它配置为 运行 两者吗?
所以本质上是一个单节点游牧集群
Production Nomad 并没有真正 "persist" 预期意义上的数据。它通过共识协议在集群内共享数据。每个服务器都保留自己的 "state of the world" 副本,然后 "gossips" 与其对等方一起保存,以注意它需要进行的任何更改。如果存在某种程度的混乱或需要决胜局,"leader" 提供了答案。如果集群中的服务器出现故障,此模式会创建冗余和弹性。 Consul 也被设计成以几乎相同的方式工作。
"dev"模式本质上是单机集群也是客户端。 出于多种原因,您真的不想在生产中这样做。主要是,服务器集群旨在监督和管理其关联客户端上的资源和分配。当您增加作业的数量和资源需求时,将它们放在同一台机器上进行生产可能会产生各种问题。您最不想要的就是您的工作与监督它的流程竞争资源。
推荐的基准生产设置是 3 个 Nomad 服务器和 2 个 Nomad 客户端,总共 5 个实例。这为您提供了 Nomad 生产部署中预期的最低限度的隔离和冗余。
我会建议尽早选择 Nomad 服务器的数量(建议 3 或 5,需要奇数才能正确选举领导者)并加固配置,这样服务器就不会意外进入和退出存在。不要使用自动缩放或动态寻址方案。相反,锁定为服务器分配的 IP、主机名等,以便在它们需要重新启动或出于某种原因离线时,它们会像以前一样出现。否则,如果其中一台服务器四处移动,您可能会冒破坏服务器共识的风险。对于 Nomad 客户端,我通常使用手动缩放组,允许我按比例增加或减少 Nomad 客户端的数量。如果您可以很好地监控资源以向缩放器提供信号,则您可能会使用自动缩放。需要做一些工作才能正确缩小规模(即标记不合格,等待耗尽),但扩大规模本质上只是配置盒子和 运行 Nomad 客户端。
由于另一个答案在其批评中是有效的,但没有费心回答这个问题,下面是您可以为 linux 做的事情:
这假设您在 /usr/local/bin/nomad
安装了游牧民族
游牧配置
在 /etc/nomad.d
中创建以下 config.hcl
。
确保从示例配置中替换 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
)
Linux 服务
然后在/etc/systemd/system/
里面创建一个服务nomad.service
:
[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
开始
我如何设置 Nomad 以与其开发模式相同的方式运行,而不是 运行 作为生产设置以便它持久保存数据?那就是 nomad agent -dev
.
我是否运行客户端/服务器重复处理?或者我可以将它配置为 运行 两者吗?
所以本质上是一个单节点游牧集群
Production Nomad 并没有真正 "persist" 预期意义上的数据。它通过共识协议在集群内共享数据。每个服务器都保留自己的 "state of the world" 副本,然后 "gossips" 与其对等方一起保存,以注意它需要进行的任何更改。如果存在某种程度的混乱或需要决胜局,"leader" 提供了答案。如果集群中的服务器出现故障,此模式会创建冗余和弹性。 Consul 也被设计成以几乎相同的方式工作。
"dev"模式本质上是单机集群也是客户端。 出于多种原因,您真的不想在生产中这样做。主要是,服务器集群旨在监督和管理其关联客户端上的资源和分配。当您增加作业的数量和资源需求时,将它们放在同一台机器上进行生产可能会产生各种问题。您最不想要的就是您的工作与监督它的流程竞争资源。
推荐的基准生产设置是 3 个 Nomad 服务器和 2 个 Nomad 客户端,总共 5 个实例。这为您提供了 Nomad 生产部署中预期的最低限度的隔离和冗余。
我会建议尽早选择 Nomad 服务器的数量(建议 3 或 5,需要奇数才能正确选举领导者)并加固配置,这样服务器就不会意外进入和退出存在。不要使用自动缩放或动态寻址方案。相反,锁定为服务器分配的 IP、主机名等,以便在它们需要重新启动或出于某种原因离线时,它们会像以前一样出现。否则,如果其中一台服务器四处移动,您可能会冒破坏服务器共识的风险。对于 Nomad 客户端,我通常使用手动缩放组,允许我按比例增加或减少 Nomad 客户端的数量。如果您可以很好地监控资源以向缩放器提供信号,则您可能会使用自动缩放。需要做一些工作才能正确缩小规模(即标记不合格,等待耗尽),但扩大规模本质上只是配置盒子和 运行 Nomad 客户端。
由于另一个答案在其批评中是有效的,但没有费心回答这个问题,下面是您可以为 linux 做的事情:
这假设您在 /usr/local/bin/nomad
游牧配置
在 /etc/nomad.d
中创建以下 config.hcl
。
确保从示例配置中替换 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
)
Linux 服务
然后在/etc/systemd/system/
里面创建一个服务nomad.service
:
[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