Docker,Registrator和Consul就是一个例子

sme*_*eeb 11 docker consul

我是新来的两个码头工人和领事,并想获得如何集装箱的应用程序可以使用领事的感觉服务注册和KV对配置管理("配置").

我的理解是我可以:

  • 创建运行领事服务器,所以像图像这样 ; 然后
  • myvm01.example.com(Ubuntu VM)上调出三个Docker-Consul容器(从而形成一个集群/仲裁); 然后
  • 重构我的应用程序以使用Consul并创建一个运行我的应用程序和Consul代理的Docker镜像,并将代理程序配置为在启动时加入3节点仲裁.启动时,我的应用程序使用本地Consul代理程序下拉所有配置,存储为KV对.它还提供已注册/健康的服务,并使用本地负载平衡工具来平衡与其集成的服务.
  • 比如说,运行我的app的容器myvm02.example.com(另一个Ubuntu VM).

首先,如果任何一个看起来我误解了Docker和Consul(没有Registrator)的正常/正确使用,请首先纠正我!

假设我或多或少是正确的,我最近偶然发现了Registrator,现在更加困惑.Registrator似乎是您的应用程序容器和您的Consul(或您使用的任何注册表)服务器之间的中间人.

阅读他们的快速入门教程后,听起来你应该做的是:

  • myvm01.example.com像以前一样部署我的Consul集群/仲裁容器
  • 我没有直接使用Consul"Dockerizing"我的应用程序,而是将其与Registrator集成
  • 然后我在某处部署一个Registrator容器,并将其配置为与Consul集成
  • 然后我部署我的app容器.它们与Registrator集成,而Registrator则与Consul集成.

我的担忧:

  • 我的理解在这里是正确还是偏离基础?如果是这样,怎么样?
  • 通过添加Registrator实际获得了什么.它似乎(至少未训练的眼睛)不像应用程序和服务注册表之间的间接层.
  • 我还能通过Registrator利用Consul的KV配置服务吗?

Sta*_*lav 9

我的理解在这里是正确还是偏离基础?如果是这样,怎么样?

在我看来,让所有群集/仲裁成员在同一个VM中运行并不是一个好的解决方案.如果你将它用于开发或挖掘或其他东西,你不太在乎可靠性,而不是用于生产,这并不是那么糟糕.

一旦您的VM死亡,您将通过创建群集失去所有优势.更重要的是,您可以放弃K/V存储中的所有数据,因为您在docker容器中运行Consul服务器,应该另外配置为在运行之间共享配置.

至于其余部分,我认为它和你一样.

通过添加Registrator实际获得了什么.

从我的角度来看,主要的是,您不必在每个运行的容器中提供Consul Agent的实例.带有运行图像的容器只负责其主要功能,而不是在某处注册.你可以简单地拉一个图像,然后用它运行一个容器,使它的服务可用,而不需要额外的工作.

我还能通过Registrator利用Consul的KV配置服务吗?

很不幸的是,不行.至少,当我们寻找能够进行服务发现和配置管理的东西时,我们找不到以这种方式使用它的解决方案.我们得出结论,Registrator不是K/V商店的代理,仅用于自动化服务发现.所以你必须使用其他一些逻辑来访问consul的K/V商店.

更新:此外,这里有2篇文章:"使用Registrator自动Docker服务公告""使用Consul和Registrator自动注册容器",我发现了解服务器发现过程中的Registrator角色非常有用.