Consul 使用微服务


在本章中,我们将了解微服务如何与 Consul 一起工作。我们还将了解以下组件如何影响 Consul。

  • 使用泊坞窗
  • 为服务发现构建注册器
  • 使用 rkt 和 Nomad

现在让我们详细讨论其中的每一个。

使用 Docker


在开始之前, 请不要在生产中使用此设置 因为它仅用于演示目的。 Docker 是一个基于容器的服务,我们可以使用它轻松部署我们的应用程序。为了使用 Consul,我们将使用以下链接中的图像 –0

https://hub.docker.com/r/progrium/consul/ .

假设你的系统已安装并正确配置了 Docker。让我们尝试从 Docker hub 拉取镜像,运行以下命令:

$ docker pull progrium/consul

输出将如以下屏幕截图所示。

Pull Progrium

我们将通过以下方式发布一些接口及其端口(在 Docker 上使用 -p 选项)。

  • 8400 (RPC)
  • 8500 (HTTP)
  • 8600 (DNS)

同样根据拉动,我们将主机名的名称设置为 node1 .你可以使用 -h flag 使用你自己的一些主机名,如下所示。

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap

输出将如以下屏幕截图所示。

Pull Made

你还可以使用以下命令为 Consul 启用 UI 模式:

$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui

你可以检查基于 UI 的输出 http://localhost:8500 .以下屏幕截图让你更好地了解基于 UI 的输出。

UI based

为了在不同节点上的各种 docker 容器上使用 consul,我们可以在不同节点上运行以下命令:

On Node1

$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3

Where, -bootstrap-期望 3 意味着 consul 服务器将等到有 3 个 peer 连接后才会自引导并成为工作集群。

在继续之前,我们需要通过检查容器来获取容器的内部 IP。为了我们的使用,案例目的,我们将声明 $ JOIN_IP .

$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"

On Node2

因此,让我们启动 Node2 并使用上面给出的程序中声明的变量告诉它加入 Node1。

$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP

On Node3

$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP

为服务发现构建注册器


Registrator 通过在容器上线时检查容器来自动注册和注销任何 Docker 容器的服务。我们即将使用的Registrator目前支持可插拔的服务注册中心,目前包括 Consul 等 and SkyDNS2 .当我们通过网络与不同的服务交互时,强烈建议使用 Registrator。

$ docker pull gliderlabs/registrator:latest

输出将如以下屏幕截图所示。

gliderlabs

$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
 consul:// 本地主机:8500

输出将如以下屏幕截图所示。

gliderlabs

你收到的输出是你刚刚启动的 Docker 容器的 ID。你可以使用以下命令检查容器是否正在运行:

$ docker ps -a

他的输出将如以下屏幕截图所示。

docker ps

你还可以使用以下命令查看 Registrator 的日志。

$ docker logs registrator

使用 rkt 和 Nomad


rkt 是另一个基于容器的服务,你可以在你的环境中使用它。它是由 CoreOS .构建 rkt 的主要原因是为了提高安全性,这是 Docker 在 2013-14 年仍处于开发阶段时面临的危机问题之一。

至于 Consul,我们可以使用 Rkt Registrator 与 Consul 一起进行服务发现。这个为 rkt 所涵盖的特定 Registrator 项目正在开发中 不推荐用于生产级使用 .

你可以通过转到其路径并运行以下命令来检查 rkt 是否已安装。

$ ./rkt

你可以检查输出以检查它是否正确安装,如以下屏幕截图所示。

Rkt Registrator

如需试用 rkt 和 Consul,请查看: https://github.com/r3boot/rkt-registrator .

游牧工具

Nomad 工具是最常用和最受欢迎的选项之一。 Nomad 是一种用于管理机器集群并在其上运行应用程序的工具。它类似于 Mesos or Kubernetes .默认情况下,Nomad 在其内部包含 Docker 和 rkt 驱动程序。因此,如果你正在寻找使用 Consul 进行大规模容器部署。 Nomad 可能是一个很好的解决方案。查看: https://www.nomadproject.io/docs/drivers/rkt.html 有关 Nomad 的更多信息。