如何将Docker-Compose缩放缩放和负载平衡的端口暴露结合在一起



如果告诉docker-composes以扩展服务,并且不揭露其端口,

docker-compose scale dataservice=2

网络中将有两个IPS DNS名称dataservice可以解决。因此,主机名达到的服务将加载余额。

我也想对Edge代理进行此操作。关键是

docker-compose scale edgeproxy=2

会导致edgeproxy解析到两个可能的IP地址之一。

但是,公开端口的语义是错误的。如果我暴露:

  8443:8443

然后,它将尝试绑定每个edgeproxy以绑定到主机8443。我想要的更像是:

0.0.0.0:8443:edgeproxy:8443

何时尝试通过主机8443进入Docker网络时,它随机选择一个边缘:8443 IP以将传入的TCP连接绑定到。

是否有替代端口?我想要一个可以让我参与的端口与将以edgeproxy解决的IP交谈。

这是由Swarm模式提供的。您可以使用:

启用一个节点群集群
docker swarm init

然后将您的撰写文件部署为:

的堆栈
docker stack deploy -c docker-compose.yml $stack_name

与Docker组成的差异很大,包括:

  1. 群未建立图像
  2. 您使用docker service命令管理目标状态,试图用docker stop停止容器无法正常工作,因为Swarm会重新启动
  3. 组成的文件需要在V3语法中
  4. 网络将是一个覆盖网络,默认情况下的容器无法连接到容器

主要更改之一是,暴露的端口已发布在由Swarm Mode管理的入口网络上,并且连接是与容器平衡的圆形robin负载。您还可以在撰写文件中定义一个副本计数,从而消除了运行刻度命令的需求。

请参阅更多信息:https://docs.docker.com/engine/swarm/

最新更新