Consul是一个全功能的服务网格解决方案,解决了操作微服务和云基础设施的网络和安全挑战。Consul提供了一种软件驱动的路由和分段方法。它还带来了额外的好处,如故障处理、重试和网络可观察性。这些功能中的每一个都可以根据需要单独使用,也可以一起使用,建立一个完整的服务网格。

Consul是一个分布式系统,旨在运行在一个节点集群上。一个节点可以是一个物理服务器、云实例、虚拟机或容器。连接在一起的Consul运行的节点集被称为数据中心。在数据中心内,Consul可以以服务器或客户端两种模式运行。服务器代理维护Consul的一致状态。客户端是一个轻量级的进程,运行在每个运行服务的节点上。一个数据中心将有3-5个服务器和许多客户端。

安装 Consul

Consul 的安装就不多介绍了, 具体可以看看官网的教程

运行 Consul

由于我采用了本地安装的方式,我将以开发模式运行 Consul , 在实际生产中不要使用这种方法运行部署.

通过 consul agent -dev 在开发模式下启动 Consul 代理。

img.png

可以看到 consul 代理已经顺利启动。

通过 consul members 命令可以查看你的 consul 列表。

img.png

输出显示代理、它的 IP 地址、它的健康状态、它在数据中心中的角色以及一些版本信息。您可以通过提供-详细标志来发现其他元数据。

通过 members 命令查询的结果可能跟实际不太一样,通过 HTTP API 可以查询准确的结果 curl localhost:8500/v1/catalog/nodes

consule3.png

使用命令 consul leave 可以停止 consul 代理。

img.png

注册服务

接下来介绍在 consul 注册一个服务。

Consul的主要功能之一是服务发现。Consul提供了一个DNS接口,下游服务可以用它来寻找其上游依赖的IP地址。

Consul知道这些服务的位置,因为每个服务都在其本地Consul客户端注册。操作员可以手动注册服务,配置管理工具可以在部署服务时注册服务,或者容器编排平台可以通过集成自动注册服务。

接下来我将通过配置文件手动注册服务。

  1. 新建配置文件目录
1
 mkdir ./consul.d
  1. 新建一个服务定义文件
1
2
3
4
5
6
7
8
9
echo '{
  "service": {
    "name": "web",
    "tags": [
      "rails"
    ],
    "port": 80
  }
}' > ./consul.d/web.json
  1. 现在重新启动代理,使用命令行标志来指定配置目录,并在代理上启用脚本检查。
1
consul agent -dev -enable-script-checks -config-dir=./consul.d

img.png

可以看到服务已经注册好了。

查询服务

上一节简单讲了如何注册服务,现在讲解通过 HTTP API 查询注册的服务。

1
curl http://localhost:8500/v1/catalog/service/web

img.png

小结

本篇文章主要简单的介绍了如何使用 consul, 讲解的还不完全,其它的部分以后还会讲解。