Consul 入门
Consul 简介
Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。之前我们通过 Prometheus 实现监控,当新增一个 Target 时,需要变更服务器上的配置文件,即使使用 file_sd_configs 配置,也需要登录服务器修改对应 Json 文件,会非常麻烦。不过 Prometheus 官方支持多种自动服务发现的类型,其中就支持 Consul。
Consul 基础架构
Consul 安装与配置
使用官方二进制包
官方下载站点:https://www.consul.io/downloads.html
解压完成之后发现只有一个二进制程序,即consul
,将其添加至环境变量,或者直接链接到环境变量当中去.
查看consul
是否成功配置:
启动一个consul agent
(开发模式):
切记,不要在生产环境中使用开发模式。
此时打开浏览器,输入http://127.0.0.1:8500 即可看到 consul 的web端
通过在新的终端窗口中运行consul Members
命令,检查Consul数据中心的成员身份,输出内容列出了数据中心中的代理(目前只有主机自己):
获取节点详细信息可以使用:curl localhost:8500/v1/catalog/nodes
除了HTTP API,您还可以使用DNS接口来发现节点:dig @127.0.0.1 -p 8600 master.node.consul
停止代理:
使用 Docker 部署
-
首先从 Docker Hub 上拉取镜像:docker pull consul
-
在启动集群之前,建立 /data/consul
文件夹, 用于保存 consul 的数据,mkdir -pv /data/consul
-
在本地启动 Consul 集群进行测试:
一般第一个容器的ip地址是 172.17.0.2
,可以通过下面的命令查询容器ip:
- 添加节点
- 查看容器中集群节点
使用 docker-compose 快速部署
创建docker-compose.yml
文件,内容如下:
然后运行:docker-compose up -d
即可
服务注册
编写测试服务,在这里我使用 nginx 来进行测试.
将下面的内容保存成文件nginx.json
,并上传到容器的/consul/config
目录中,或者容器创建时指明存储卷也可.
将文件复制到容器中,并重载服务:
或者直接使用HTTP API
的方式进行注册:
注销服务使用:curl -X PUT http://172.16.1.132:8500/v1/agent/service/deregister/nginx_test
查看服务健康状态检查:
打开浏览器访问:http://172.16.1.132:8500/v1/health/service/test-nginx 即可.
参考链接