Consul是一个全功能的服务网格解决方案,解决了操作微服务和云基础设施的网络和安全挑战。Consul提供了一种软件驱动的路由和分段方法。它还带来了额外的好处,如故障处理、重试和网络可观察性。这些功能中的每一个都可以根据需要单独使用,也可以一起使用,建立一个完整的服务网格。
Consul是一个分布式系统,旨在运行在一个节点集群上。一个节点可以是一个物理服务器、云实例、虚拟机或容器。连接在一起的Consul运行的节点集被称为数据中心。在数据中心内,Consul可以以服务器或客户端两种模式运行。服务器代理维护Consul的一致状态。客户端是一个轻量级的进程,运行在每个运行服务的节点上。一个数据中心将有3-5个服务器和许多客户端。
安装 Consul
Consul 的安装就不多介绍了, 具体可以看看官网的教程 。
运行 Consul
由于我采用了本地安装的方式,我将以开发模式运行 Consul , 在实际生产中不要使用这种方法运行部署.
通过 consul agent -dev
在开发模式下启动 Consul 代理。
可以看到 consul 代理已经顺利启动。
通过 consul members 命令可以查看你的 consul 列表。
输出显示代理、它的 IP 地址、它的健康状态、它在数据中心中的角色以及一些版本信息。您可以通过提供-详细标志来发现其他元数据。
通过 members 命令查询的结果可能跟实际不太一样,通过 HTTP API 可以查询准确的结果 curl localhost:8500/v1/catalog/nodes
。
使用命令 consul leave
可以停止 consul 代理。
注册服务
接下来介绍在 consul 注册一个服务。
Consul的主要功能之一是服务发现。Consul提供了一个DNS接口,下游服务可以用它来寻找其上游依赖的IP地址。
Consul知道这些服务的位置,因为每个服务都在其本地Consul客户端注册。操作员可以手动注册服务,配置管理工具可以在部署服务时注册服务,或者容器编排平台可以通过集成自动注册服务。
接下来我将通过配置文件手动注册服务。
- 新建配置文件目录
mkdir ./consul.d
- 新建一个服务定义文件
echo '{
"service": {
"name": "web",
"tags": [
"rails"
],
"port": 80
}
}' > ./consul.d/web.json
- 现在重新启动代理,使用命令行标志来指定配置目录,并在代理上启用脚本检查。
consul agent -dev -enable-script-checks -config-dir=./consul.d
可以看到服务已经注册好了。
查询服务
上一节简单讲了如何注册服务,现在讲解通过 HTTP API 查询注册的服务。
curl http://localhost:8500/v1/catalog/service/web
小结
本篇文章主要简单的介绍了如何使用 consul, 讲解的还不完全,其它的部分以后还会讲解。