我们用游牧民族部署我们的应用程序 - 提供rpc端点——作为任务。然后任务被注册到领事, 使用游牧民的服务节。
我们的应用程序的路由是通过特使代理. 我们正在运行在 IP 上负载平衡的中央特使实例10.1.2.2
。
目前,路由到哪个端点/任务的决定是基于host
标头的,并且每个任务都注册为 下的一项服务<$JOB>.our.cloud
。这导致了两个问题。
访问服务时,必须为负载均衡器 IP 注册 DNS 名称,这将导致出现
/etc/hosts
类似以下条目10.1.2.2 serviceA.our.cloud serviceB.our.cloud serviceC.our.cloud
通过使用,可以部分缓解此问题
dnsmasq
,但添加新服务时仍然有点烦人不可能同时运行多个提供相同 gRPC 服务的服务。例如,如果我们决定测试服务的新实现,我们需要以相同的
job
名称运行它,并且需要实现 gRPC 服务文件中定义的所有服务。
我们一直在讨论的一个可能的解决方案是使用tags
节service
来添加定义提供的 gRPC 服务的标签,例如:
service {
tags = ["grpc-my.company.firstpackage/ServiceA", "grpc-my.company.secondpackage/ServiceB"]
}
但这是被领事:
Dots are not supported because Consul internally uses them to delimit service tags.
现在我们考虑用诸如这样的标签来实现它grpc-my-company-firstpackage__ServiceA
...但这看起来真的很恶心:-(
)所以我的问题是:
- 有人做过这样的事吗?
- 如果是这样,关于如何路由到 Consul 自动发现的 gRPC 服务有哪些建议?
- 有人对此有其他想法或见解吗?
- 例如如何实现这一点Istio?