在Docker Swarm中放置单独的服务发现并将其集成到集群机器之间有什么不同

时间:2015-11-15 17:23:55

标签: docker service-discovery docker-swarm

我无法理解分离服务发现服务器的需求,而我们可以通过任何协议将从节点注册到从节点启动时的主节点。托管另一项服务对我来说似乎是多余的。

1 个答案:

答案 0 :(得分:4)

Docker Swarm用于创建运行Docker的主机群集,并在群集中安排容器 它不包括service discovery,它由后端服务提供,例如etcd,consul或zookeeper。

  
      
  • 第一个问题:服务注册和发现是基础设施问题,而不是应用程序问题。
  •   
  • 第二个问题:当基础架构和应用程序实现是相互不可知的时,实现服务注册和发现是很困难的。
  •   

DockerCon使用“Docker Stack”来区分this morning (Nov. 16th, 2015)

enter image description here
(来自@laurelcomics的图片)

  

Docker网络通过支持具有可插入基础设施组件的接口(DNS)来解决这些问题,这些组件遵循通用的KV接口。

您可以看到consul.io用于:

这意味着:

  • Consul 是一个KV(Key / Value)商店,可以插入Swarm以管理服务发现方面。
  • Swarm 是访问层,通常是包含网关或路由组件的层,允许其他人实际访问您的服务。

https://cdn-images-1.medium.com/max/800/1*aQpT7eAmwhWItNuIi9PXFw.png

Easy routing and service discovery with Docker, Consul and nginx撰写的“Ladislav Gazo”文章中的图片

目标是在自己的容器中隔离基础架构关注点(发现服务),与开发工具关注点(Swarm)分开。