Docker,以注册员和领事为例
Docker, Registrator and Consul by example
我是 Docker 和 Consul 的新手,我正在尝试了解容器化应用程序如何将 Consul 用于 服务注册表和 KV 对配置管理("configuration")。
我的理解是我可以:
- 创建一个运行 Consul 服务器的镜像,比如 this;然后
- 在
myvm01.example.com
(一个 Ubuntu 虚拟机)上启动三个 Docker-Consul 容器(从而形成一个 cluster/quorum);然后
- 重构我的应用程序以使用 Consul 并创建一个运行我的应用程序和 Consul 代理的 Docker 映像,该代理配置为在启动时加入 3 节点仲裁。在启动时,我的应用程序使用本地 Consul 代理来提取其所有配置,存储为 KV 对。它还引入了 registered/healthy 服务,并使用本地负载平衡工具来平衡它所集成的服务。
- 运行 我的应用程序容器在
myvm02.example.com
(另一个 Ubuntu 虚拟机)上。
所以首先,如果我对 Docker 和 Consul(没有 Registrator)的 normal/proper 用法有任何误解,请先纠正我!
假设我或多或少是正确的,我最近偶然发现了 Registrator,现在更加困惑了。 Registrator 似乎是您的应用程序容器和您的 Consul(或您使用的任何注册表)服务器之间的中间人。
阅读他们的快速入门教程后,听起来您应该做的是:
- 像以前一样将我的 Consul cluster/quorum 容器部署到
myvm01.example.com
- 我的应用程序没有直接使用 Consul,而是 "Dockerizing" 我只是将它与 Registrator 集成
- 然后我在某处部署了一个 Registrator 容器,并配置它与 Consul 集成
- 然后我部署我的应用程序容器。它们与 Registrator 集成,Registrator 又与 Consul 集成。
我的顾虑:
- 我的理解是正确的还是有偏差?如果可以,怎么做?
- Registrator的加入实际获得了什么。它似乎(至少在未经训练的人看来)只不过是应用程序和服务注册表之间的一层间接层。
- 我还能通过 Registrator 使用 Consul 的 KV 配置服务吗?
Is my understanding here correct or way off base? If so, how?
在我看来,让所有 cluster/quorum 成员 运行 都在同一个 VM 中并不是一个好的解决方案。如果您将它用于开发或测试或其他不太关心可靠性而不是生产的地方,那还不错。
一旦您的 VM 死机,您将失去创建集群所拥有的所有优势。更重要的是,您可以丢失 K/V 存储中的所有数据,因为您在 docker 容器中 运行ning Consul 服务器,应该额外配置以共享配置运行秒。
其他的,我和你的看法一样
What is actually gained by the addition of Registrator.
在我看来,最主要的是,您不必在 运行 的每个容器中都提供一个 Consul Agent 实例。而带有你运行图像的容器只负责它们的主要功能,而不负责在某处注册自己。您可以简单地拉取一个图像和 运行 一个容器,使其服务可用,而无需进行额外的工作。
Will I still be able to leverage Consul's KV config service through Registrator?
很遗憾,没有。至少,当我们正在寻找可以进行服务发现和配置管理的东西时,我们没有找到以这种方式使用它的解决方案。我们得出结论,Registrator 不是 K/V 商店的代理,仅用于自动化服务发现。所以你必须使用一些其他的逻辑来访问 consul 的 K/V 商店。
更新: 此外,这里有 2 篇文章:"Automatic Docker Service Announcement with Registrator" and "Automatic container registration with Consul and Registrator",我发现它有助于理解注册器在服务发现过程中的作用。
我是 Docker 和 Consul 的新手,我正在尝试了解容器化应用程序如何将 Consul 用于 服务注册表和 KV 对配置管理("configuration")。
我的理解是我可以:
- 创建一个运行 Consul 服务器的镜像,比如 this;然后
- 在
myvm01.example.com
(一个 Ubuntu 虚拟机)上启动三个 Docker-Consul 容器(从而形成一个 cluster/quorum);然后 - 重构我的应用程序以使用 Consul 并创建一个运行我的应用程序和 Consul 代理的 Docker 映像,该代理配置为在启动时加入 3 节点仲裁。在启动时,我的应用程序使用本地 Consul 代理来提取其所有配置,存储为 KV 对。它还引入了 registered/healthy 服务,并使用本地负载平衡工具来平衡它所集成的服务。
- 运行 我的应用程序容器在
myvm02.example.com
(另一个 Ubuntu 虚拟机)上。
所以首先,如果我对 Docker 和 Consul(没有 Registrator)的 normal/proper 用法有任何误解,请先纠正我!
假设我或多或少是正确的,我最近偶然发现了 Registrator,现在更加困惑了。 Registrator 似乎是您的应用程序容器和您的 Consul(或您使用的任何注册表)服务器之间的中间人。
阅读他们的快速入门教程后,听起来您应该做的是:
- 像以前一样将我的 Consul cluster/quorum 容器部署到
myvm01.example.com
- 我的应用程序没有直接使用 Consul,而是 "Dockerizing" 我只是将它与 Registrator 集成
- 然后我在某处部署了一个 Registrator 容器,并配置它与 Consul 集成
- 然后我部署我的应用程序容器。它们与 Registrator 集成,Registrator 又与 Consul 集成。
我的顾虑:
- 我的理解是正确的还是有偏差?如果可以,怎么做?
- Registrator的加入实际获得了什么。它似乎(至少在未经训练的人看来)只不过是应用程序和服务注册表之间的一层间接层。
- 我还能通过 Registrator 使用 Consul 的 KV 配置服务吗?
Is my understanding here correct or way off base? If so, how?
在我看来,让所有 cluster/quorum 成员 运行 都在同一个 VM 中并不是一个好的解决方案。如果您将它用于开发或测试或其他不太关心可靠性而不是生产的地方,那还不错。
一旦您的 VM 死机,您将失去创建集群所拥有的所有优势。更重要的是,您可以丢失 K/V 存储中的所有数据,因为您在 docker 容器中 运行ning Consul 服务器,应该额外配置以共享配置运行秒。
其他的,我和你的看法一样
What is actually gained by the addition of Registrator.
在我看来,最主要的是,您不必在 运行 的每个容器中都提供一个 Consul Agent 实例。而带有你运行图像的容器只负责它们的主要功能,而不负责在某处注册自己。您可以简单地拉取一个图像和 运行 一个容器,使其服务可用,而无需进行额外的工作。
Will I still be able to leverage Consul's KV config service through Registrator?
很遗憾,没有。至少,当我们正在寻找可以进行服务发现和配置管理的东西时,我们没有找到以这种方式使用它的解决方案。我们得出结论,Registrator 不是 K/V 商店的代理,仅用于自动化服务发现。所以你必须使用一些其他的逻辑来访问 consul 的 K/V 商店。
更新: 此外,这里有 2 篇文章:"Automatic Docker Service Announcement with Registrator" and "Automatic container registration with Consul and Registrator",我发现它有助于理解注册器在服务发现过程中的作用。