简介
Consul是一个开源的分布式服务发现和配置管理工具。它提供了一个分布式的、高可用的数据存储,可以用来存储键值对、配置数据、服务发现信息等。同时,Consul还提供了HTTP和DNS接口,可以用来查询服务、配置和健康状态等信息。
它具备以下特性 :
- service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。
- health checking:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
- key/value storage:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
- multi-datacenter:无需复杂的配置,即可支持任意数量的区域。
consult安装
下载地址
https://developer.hashicorp.com/consul/install
选择自己需要安装的版本,作者安装的是1.20.1版本,下载后,解压输入命令
./consult version
上述命令会打印consult的版本号。
consult启动
启动命令如下
nohup consul agent -server -bootstrap-expect=1 -datacenter=dc1 -node=server-1 -bind=192.168.1.100 -client=0.0.0.0 -ui
Consul的启动参数可以通过命令行参数、环境变量或配置文件来指定。以下是一些常用的启动参数:
-bind
: 绑定到指定的IP地址,用于通信和节点识别。默认情况下,Consul会自动选择一个IP地址。-datacenter
: 指定数据中心的名称,用于区分多个Consul集群。-node
: 指定节点的名称,用于在集群中唯一识别一个节点。-server
: 指定节点是否为Consul集群的服务器节点,值为true或false。默认情况下,节点是客户端节点。-bootstrap
: 指定节点是否为集群的引导节点,值为true或false。引导节点是集群中的第一个服务器节点。
数据存储
Consul的数据存储基于Raft协议,可以确保数据的一致性和高可用性。Consul提供了一个键值存储,可以用于存储配置数据、服务发现信息等。以下是一些常用的命令:
- consul kv put: 存储键值对。
- consul kv get: 获取指定键的值。
- consul kv delete: 删除指定键。
以下是一个示例:
$ consul kv put web/config/max-connections 100
$ consul kv get web/config/max-connections
100
$ consul kv delete web/config/max-connections
服务API操作
服务注册如下api
curl -X PUT http://192.168.52.169:8500/v1/catalog/register -d '{"Datacenter": "dc1", "Node": "server-1","Address": "192.168.52.169", "Service":{"Id": "192.168.52.169:8089","Service": "SpringBoot","Tags":["dev"], "Port": 8089}}'curl -X PUT http://192.168.52.169:8500/v1/catalog/register -d '{"Datacenter": "dc1", "Node": "SpringBoot1","Address": "192.168.52.169", "Service":{"Id": "192.168.52.169:8090","Service": "SpringBoot","Tags":["dev"], "Port": 8090}}'
参数说明
Datacenter
指定数据中心Address
指定服务IPService.Id
指定服务唯一标识Service.Service
指定服务分组Service.tags
指定服务标签(如测试环境、预发环境等)Service.Port
指定服务器端口。
摘除服务,如下api
curl -X PUT http://192.168.52.169:8500/v1/catalog/deregister -d '{"Datacenter": "dc1", "Node": "SpringBoot1", "ServiceID": "192.168.52.169:8089"}'
服务发现如下api
curl http://192.168.52.169:8500/v1/catalog/service/SpringBoot