Docker Swarm ping 按主机名增量主机。<id>



我有一个服务,它要求它可以连接到自己的其他实例以建立仲裁。

服务有一个环境变量,如:

initialDiscoverMembers=db.1:5000,db.2:5000,db.3:5000

他们永远找不到对方。我已经尝试登录到其他容器和ping其他服务。如ping redis.1,它不起作用。

在Docker (swarm)中是否有一种方法可以获得用于连接的增量主机名?我看了endpoint_mode: dnsrr,但这似乎不是我想要的。

我想我可能不得不创建三个单独的服务实例,并为它们命名不同的东西,但这似乎太麻烦了。

您不能使用增量host.<id>独立引用每个容器,因为Swarm上的DNS解析是基于服务完成的;你能做的就是根据每个容器的Swarm槽位给它添加一个hostname别名。

例如,现在您正在使用db服务,因此您可以添加:

version: '3.7'
services:
db:
image: postgres
deploy:
replicas: 3
hostname: "db-{{.Task.Slot}}"
ports:
- 5000:5432

在这种情况下,由于每个Swarmtask中的所有容器都在同一个网络中,您可以通过db-1,db-2db-3对它们进行寻址。

相关内容

  • 没有找到相关文章

最新更新