我是 Docker 和 Consul 的新手,我试图了解容器化应用程序如何将 Consul 用于 服务注册表和 KV 对配置管理(“配置”)。
我的理解是我可以:
myvm01.example.com
(一个 Ubuntu VM)上启动三个这些 Docker-Consul 容器(从而形成一个集群/仲裁);然后 myvm02.example.com
(另一个 Ubuntu VM)上运行我的应用程序的容器。 因此,首先,如果我对 Docker 和 Consul(无注册器)的正常/正确使用有任何误解,请首先纠正我!
假设我或多或少是正确的,我最近偶然发现了 Registrator 并且现在更加困惑。 Registrator 似乎是您的应用程序容器和您的 Consul(或您使用的任何注册表)服务器之间的中间人。
阅读他们的快速入门教程后,听起来您应该做的是:
myvm01.example.com
我的顾虑:
最佳答案
在我看来,让所有集群/仲裁成员在同一个 VM 中运行并不是一个好的解决方案。如果您将它用于开发或测试或其他事情,您不太关心可靠性,但不关心生产,那还不错。
一旦您的虚拟机死亡,您将失去创建集群所拥有的所有优势。更重要的是,您可以丢失 K/V 存储中的所有数据,因为您在 docker 容器中运行 Consul 服务器,应该额外配置它以在运行之间共享配置。
至于其他的,我和你的看法一样。
在我看来,最重要的是,您不必在运行的每个容器中都提供 Consul Agent 的实例。带有你运行的镜像的容器只负责它们的主要功能,而不是在某处注册自己。您可以简单地拉取一个镜像并使用它运行一个容器,以使其服务可用,而无需进行额外的工作。
抱歉不行。至少,当我们正在寻找可以进行服务发现和配置管理的东西时,我们没有找到以这种方式使用它的解决方案。我们得出的结论是,Registrator 不是 K/V 存储的代理,仅用于自动发现服务。所以你必须使用一些其他的逻辑来访问 consul 的 K/V 存储。
更新: 此外,这里有 2 篇文章: "Automatic Docker Service Announcement with Registrator" 和 "Automatic container registration with Consul and Registrator" ,我发现了解服务进程发现中的注册器角色很有用
关于Docker、Registrator 和 Consul 示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32745275/