我们有一个用例,其中从一个主要的 Nomad 作为集群调度程序,与 Consul 一起非常适合,但我们有一些问题,什么是实现它的最佳方法:
服务的单个实例(Docker 实例,也可以是本机进程)由一群人共享。每个实例都用一个 ID 唯一标识,这个 ID 将作为请求的一部分传递(例如 HTTP-header)。使用 Nomad 完全可以调度此工作负载。服务实例在 Consul 中注册。
这种模式在某种程度上类似于一些游戏服务器的处理方式,一群人共享一个游戏服务器的实例。不幸的是,我们无法找到有关如何使用 Nomad/Consul 有效构建的信息。
我们有以下问题
- 我们计划为每个独特的流程创建一个专门的 Nomad 作业(基于通用模板);作业名称将包含唯一 ID,如果需要,还包含其他元数据以在 Consul 中识别它们。这是处理“独特性”的正确方法吗?
- 我们假设我们必须创建一个自定义代理/(第 7 层)路由器来处理验证工作是否已经启动并按需启动它。对于可以扩展此类功能并很好地集成到 Nomad/Consul 生态系统中的代理,有什么建议可以作为从头开始构建的替代方案吗?
- 检查 Nomad 作业是否已经开始的最有效方法是什么?只需将请求(基于唯一 ID)路由到服务,由“唯一”作业表示,如果请求失败启动作业?或者为每个请求进行明确的 DNS 查找(DNS 将由 Consul 维护/提供)?
谢谢你。非常感谢任何帮助。