【发布时间】:2021-02-13 20:04:35
【问题描述】:
我正在为我的 Nomad 集群构建一个自我配置的代理。为此,我需要检索集群中运行的所有作业,以及它们为每个运行的容器分配的 IP 和端口。这样我可以自动生成反向代理配置和负载均衡器。
我必须通过 Nomad 或 Consul 的 API 来获取它,但我需要通过一个 API 调用来获取它。我知道我可以通过调用 Consul 的端点/v1/catalog/node/nomad-node-3 来获取给定节点中的所有服务,但我必须指定节点。
有没有我可以使用的端点?
【问题讨论】:
-
不是每个服务都有代理吗?服务在多个节点上运行,因此您不应该使用 Node API 端点......相反,您似乎需要服务目录。否则,Fabio 或 Traefik 基于 Consul 标记工作
-
不完全。代理保存所有服务及其上游的最新目录,然后对请求应用一些负载平衡。我设法用一些 lua 代码来完成它。代理每隔几秒钟扫描一次所有领事节点,以保持服务和上游列表是最新的。这不是最好的解决方案,但它适用于我的用例。我很快会在这篇文章中添加一个正确的答案,包括我使用的代码。
-
您是否考虑过使用 consul-template 为您的反向代理生成配置,或者使用 Consul 的 blocking queries 来消除节点的定期轮询以及随之而来的额外服务器负载?跨度>