如果我们想象Docker Swarm由节点A,B和C组成。 如果我们假设我们运行一个服务的Docker Stack(出于示例目的),该服务将扩展到2个实例,并且该服务公开了主机的端口80。
如何确保点击量达到
http://A:80
http://B:80
http://C:80
始终在实时Docker实例上运行。
鉴于该服务有2个实例,总共有3个节点,因此总会有至少一个不具有该服务的节点,因此它不会暴露端口80(我认为)。
答案 0 :(得分:1)
将编排与群模式是您现在不得在群中有关单个节点。相反,Swarm在services
上的节点->上的抽象级别更高。
因此,您可以告诉swarm由哪些节点组成,拥有哪些服务以及要为每个服务在swarm中运行多少个容器实例。配置完后,决定/知道哪个容器在哪个节点上运行是swarm的工作。再说一次:您不在乎单个节点。
所以问题不在于如何制作
http://A:80
http://B:80
http://C:80
(重新)路由到正确/有效的节点(使用暴露的端口运行相应的容器)
因为您唯一需要知道的就是服务的名称。所以你只会打电话
http://myservice:80
然后群模式将决定将请求转发到哪个节点(http://A:80
或http://B:80
或http://C:80
)。如果您有3个节点,则1个服务和该服务群的2个副本将确保不会将任何请求转发到没有容器运行的节点,因为它知道只有2个副本,并且知道这些实例在哪些节点上运行。