- Consul 教程
- Consul - 首页
- Consul - 简介
- Consul - 架构
- Consul - 安装
- Consul - 微服务实战
- Consul - 引导和DNS
- Consul - 查询节点
- Consul - 故障转移事件
- Consul - 使用UI
- Consul - 在AWS上使用Consul
- Consul 有用资源
- Consul - 快速指南
- Consul - 有用资源
- Consul - 讨论
Consul - 微服务实战
本章将了解微服务如何与Consul协同工作。我们还将学习以下组件如何影响Consul。
- 使用Docker
- 构建Registrator用于服务发现
- 使用rkt和Nomad
现在让我们详细讨论每一个。
使用Docker
在开始之前,请勿在生产环境中使用此设置,因为它仅用于演示目的。Docker是一个基于容器的服务,我们可以轻松地部署我们的应用程序。为了使用Consul,我们将使用以下链接中的镜像 –0
https://hub.docker.com/r/progrium/consul/.
假设您的系统已安装并正确配置了Docker。让我们尝试从Docker Hub拉取镜像,运行以下命令:
$ docker pull progrium/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的UI模式:
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul -server -bootstrap -ui-dir /ui
您可以在https://127.0.0.1:8500上查看基于UI的输出。以下屏幕截图可以让您更好地了解基于UI的输出。
为了在不同节点上的各种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、Etcd和SkyDNS2。当我们在网络上与不同的服务交互时,强烈建议使用Registrator。
$ docker pull gliderlabs/registrator:latest
输出将如以下屏幕截图所示。
$ docker run -d \ --name = registrator \ --net = host \ --volume = /var/run/docker.sock:/tmp/docker.sock \ gliderlabs/registrator:latest \ consul://127.0.0.1:8500
输出将如以下屏幕截图所示。
您收到的输出是您刚刚启动的Docker容器的ID。您可以使用以下命令检查容器是否正在运行:
$ docker ps -a
输出将如以下屏幕截图所示。
您还可以使用以下命令查看Registrator的日志。
$ docker logs registrator
使用rkt和Nomad
rkt是另一个基于容器的服务,您可以在您的环境中使用它。它由CoreOS构建。构建rkt的主要原因是提高安全性,这是Docker在2013-14年开发时面临的危机问题之一。
至于Consul,我们可以使用Rkt Registrator来处理与Consul的服务发现。这个针对rkt的Registrator项目正在开发中,不建议用于生产环境。
您可以通过转到其路径并运行以下命令来检查rkt是否已安装。
$ ./rkt
您可以检查输出以查看它是否已正确安装,如以下屏幕截图所示。
要尝试rkt和Consul,请查看:https://github.com/r3boot/rkt-registrator
Nomad工具
最常用和最受欢迎的选项之一是Nomad工具。Nomad是一个用于管理机器集群并在其上运行应用程序的工具。它类似于Mesos或Kubernetes。默认情况下,Nomad在其自身内部包含Docker和rkt驱动程序。因此,如果您正在寻找使用Consul进行大规模容器部署,Nomad可能是一个不错的解决方案。请查看https://www.nomadproject.io/docs/drivers/rkt.html,了解更多关于Nomad的信息。