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