Consul 与微服务合作

Consul 与微服务合作

在这一章中,我们将了解微服务与Consul的合作方式。我们还将学习以下组件对Consul的影响。

  • 使用Docker
  • 构建Service Discovery的Registrator
  • 使用rkt和Nomad

现在让我们逐个详细讨论这些内容。

使用Docker

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

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

假设您的系统已安装和正确配置了Docker。让我们尝试通过运行以下命令从Docker Hub上拉取该镜像-

$ docker pull progrium/consul

输出结果如下所示:

Consul 与微服务合作

我们将以以下方式发布一些带有端口的接口(在Docker上使用-p选项)。

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

另外,根据所制作的拉取请求,我们将设置主机名称为 node1 。您可以按照下面所示使用 -h标志 将其更改为您想要的任何内容。

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

输出结果如下屏幕截图所示。

Consul 与微服务合作

您还可以使用以下命令启用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的输出。

Consul 与微服务合作

要在不同节点上的各个docker容器上使用consul,我们可以在不同节点上运行以下命令 –

在Node1上:

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

其中, -bootstrap-expect 3 意思是Consul服务器会在连接3个对等节点之前等待自引导并形成一个工作集群。

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

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

在Node2上

所以,让我们开始Node2,并使用上面给出的程序中声明的变量告诉它加入Node1。

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

在Node3上

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

为服务发现构建的Registrator

Registrator通过检查容器的上线情况自动注册和注销任何Docker容器的服务。我们即将使用的Registrator目前支持可插拔的服务注册表,当前包括 Consul、EtcdSkyDNS2 。当我们在网络上与不同的服务进行交互时,强烈建议使用Registrator。

$ docker pull gliderlabs/registrator:latest

输出结果如下所示。

Consul 与微服务合作

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

输出的结果如下图所示。

Consul 与微服务合作

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

$ docker ps -a

输出结果如下所示:

Consul 与微服务合作

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

$ docker logs registrator

使用 rkt 和 Nomad

rkt 是另一种基于容器的服务,你可以在你的环境中使用它。它是由 CoreOS 开发的。构建 rkt 的主要原因是为了改善安全性,这是 Docker 在 2013-14 年开发初期面临的一个危机问题。

至于 Consul,我们可以使用 Rkt Registrator 来在 Consul 上进行服务发现。这个特定的 Registrator 项目正在开发中,并且 不推荐用于生产级别使用

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

$ ./rkt

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

Consul 与微服务合作

为了尝试rkt和Consul,请查看- https://github.com/r3boot/rkt-registrator 。

Nomad工具

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程