Consul - 使用微服务

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

  • 使用docker

  • 构建Registrator服务发现

  • 使用rkt和Nomad

现在让我们详细讨论这些内容.

使用Docker

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

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

假设您的系统已安装Docker且配置正确.让我们尝试从Docker中心下拉图像,运行以下命令 :

 
 $ docker pull progrium/consul

输出结果如下图所示.

Pull Progrium

我们将以下列方式发布一些带有端口的接口(在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

输出为如下所示截图.

Pull Made

您还可以启用UI模式领事使用 :

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

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

基于UI

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

在Node1上

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

其中, -bootstrap-expect 3 表示领事服务器将等到自引导之前连接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,Etcd 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://localhost:8500

输出结果如下图所示.

gliderlabs

您收到的输出是您刚刚开始的Docker Container的ID.您可以使用命令 : 来检查容器是否正在运行;

 
 $ docker ps -a

他的输出将如下面的屏幕截图所示.

docker ps

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

 
 $ docker logs registrator

使用rkt和Nomad

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

至于Consul,我们可以使用Rkt Registrator用于与Consul一起开展服务发现.这个特殊的Registrator项目,包含在rkt中,目前正在开发中,不推荐用于生产级别使用.

您可以检查是否安装了rkt,通过转到它的路径并运行以下命令.

 
 $ ./rkt

您可以检查输出以检查输出是否正确,如下面的屏幕截图所示.

Rkt Registrator

试用rkt和领事请查看 : 去;  https://github.com/r3boot/rkt-registrator .

游牧工具

其中最常用的和喜爱的选项是游牧的工具. Nomad是一种管理机器集群并在其上运行应用程序的工具.它类似于 Mesos Kubernetes .默认情况下,Nomad会在其自身内部覆盖Docker和rkt驱动程序.因此,如果您正在寻找与Consul进行大规模容器部署的话. Nomad可能是一个很好的解决方案.退房 :   https://www.nomadproject.io/docs/drivers/rkt.html 关于Nomad的更多信息.