在Docker Swarm中进行单独的服务发现并将其集成到集群机器中有什么不同?

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

Docker Swarm可以创build一个运行Docker的主机集群,并在集群中安排容器。
它不包括由后端服务(如etcd,consul或zookeeper)提供的服务发现 。

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

DockerCon 今天上午(2015年11月16日)将“Docker Stack”

在这里输入图像说明
(来自@laurelcomics的graphics)

Dockernetworking通过支持带有可插拔基础结构组件的接口(DNS)来解决这些问题,该基础结构组件遵循通用的KV接口。

你可以看到consul.io用于:

  • “ 使用Docker,Consul和nginx进行简单的路由和服务发现 ”
  • “ Docker覆盖networking:这很容易 ”
  • “ Docker DNS getaddrinfo ENOTFOUN D ”

这意味着:

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

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

(来自Ladislav Gazo撰写的“ 使用Docker,Consul和nginx进行简单路由和服务发现 ”一文)

目标是在自己的容器中分离什么是基础架构问题(发现服务),与开发工具问题(Swarm)分开。