本教程介绍在Windows、CentOS以及Docker下安装配置Consul。
【Windows下安装】
1、下载安装包 https://www.consul.io/downloads.html
2、复制consul.exe到指定目录,如:D:\Consul\consul.exe
3、以管理员身份启动CMD,执行以下命令
|
|
或以管理员身份启动Powershell,执行以下命令
|
|
【CentOS下安装】
|
|
【Docker启动】
|
|
【参数说明】
● agent: 表示启动 Agent 进程。
● server:表示启动 Consul Server 模式
● client:表示启动 Consul Cilent 模式。
● bootstrap:表示这个节点是 Server-Leader ,每个数据中心只能运行一台服务器。技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导 Leader,在引导群集后,建议不要使用此标志。
● ui:表示启动 Web UI 管理器,默认开放端口 8500,所以上面使用 Docker 命令把 8500 端口对外开放。
● node:节点的名称,集群中必须是唯一的,默认是该节点的主机名。
● client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0
● join:表示加入到某一个集群中去。 如:-json=192.168.0.11。
【查看版本】
|
|
【运行agent】
consul安装之后,代理必须运行。代理可以在服务器或客户端模式下运行。
|
|
【注册服务】
1、服务定义
将consul的配置文件放到一个文件夹
|
|
定义一个名为web的服务在端口80上运行,给一个标签,可以作为查询服务的附加方式
|
|
指定配置目录重启代理程序
|
|
以上命令执行后可以在日志中看到类似 [DEBUG] agent: Service “web” in sync 的项,
证明代理程序从配置文件加载了服务定义,并成功将其注册到服务目录中。
2、查询服务
代理启动后,可用DNS或HTTP API查询服务
对于DNS API,服务的DNS名称为 NAME.service.consul。(NAME为服务的名称,所有DNS名称始终在consul命名空间中)
|
|
使用DNS API检索整个地址/端口对作为SRV记录
|
|
SRV记录表示web服务正在80端口运行,并且存在于节点localhost.localdomain.node.dc1.consul
除此之外,还能用DNS API按标签查询。格式为:TAG.NAME.service.consul
|
|
对于HTTP API,可以使用curl来查询
|
|
- 目录API提供了托管给定服务器的所有节点
以下命令只查找健康的实例
|
|
3、更新服务
服务定义可以通过更改配置文件并向代理发送SIGHUP来更新。(此操作不会出现任何停机或无法提供服务查询的情况)
除了改配置文件外,还可通过HTTP API动态添加、删除和修改服务
【consul集群】
1、启用代理
-dev参数可以快速设置一个开发服务器,但不足以在集群环境中使用。
集群装哪个每个节点都必须有唯一的名称。(consul默认使用机器的主机名,可用-node参数手动覆盖)
-bind参数可用于侦听地址,该地址可被集群中所有节点访问。
第一个节点将作为这个集群的唯一服务器,可以用-server参数来指定。
-bootstrap-expect参数用于向consul服务器提示我们期望加入的其他服务器节点数。用于延迟复制日志的引导,直至预期数量的服务器成功加入。
-enable_script_checks参数设置为true时,可以启用执行外部脚本的运行状况检查
参考:
1、https://blog.csdn.net/qq_38565742/article/details/82015744
2、https://zhuanlan.zhihu.com/p/361869606
3、https://www.cnblogs.com/summerday152/p/14013439.html