consul[安装/服务启用/注册].md

简介

使用场景
    Consul用于服务注册、发现与配置共享

install

wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip
unzip consul_1.7.2_linux_amd64.zip
sudo mv consul /bin/
  • 验证安装成功
    consul -v

consul 单点

  • 启动一个client
    consul agent -dev -ui -client 0.0.0.0
  • 查看节点信息
    启动后即可通过 IP:8500 打开管理界面查看节点信息(同集群模式在Web客户端查看节点信息)
  • 也可通过命令行查看节点信息
    curl IP:8500/v1/catalog/nodes

consul 集群模式

每个服务对应一个主机[或虚拟主机]
  • 启动一个server
    consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=biby-1 -ui -client 0.0.0.0 -bind 192.168.10.10 -join 192.168.10.10
  • 启动一个client
    consul agent -data-dir /tmp/consul -node=biby-c1 -ui -client 0.0.0.0 -bind 12.12.12.12 -join 192.168.10.10

在web客户端查看节点信息

在consul服务机器查看节点信息[集群成员]

在不同的机器上都能看到相同的consul节点信息
consul members

查看成员角色

consul operator raft list-peers

参数说明

参数名 说明
agent 核心命令[维护成员信息/运行状态监测/声明服务/清理请求]
server server模式
client 客户端服务注册的地址,可以和当前server一致,也可以是其他主机地址,默认127.0.0.1
ui 开启web控制台
bootstrap-expect 想要创建的集群数组[官方建议3或5]
data-dir 数据存储目录
node 节点名称
bind 集群通讯地址
join 加入的集群地址

服务注册

通过HTTP API注册服务

注册一个ID为 userServiceId, name为 userService 的服务
curl http://127.0.0.1:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{
  "ID": "userServiceId",  
  "Name": "userService",
  "Tags": [
    "primary",
    "v1"
  ],
  "Address": "127.0.0.1",
  "Port": 8000,
  "EnableTagOverride": false,
  "Check": {
    "DeregisterCriticalServiceAfter": "90m",
    "HTTP": "http://www.baidu.com",
    "Interval": "10s"
  }
}'

查看服务是否注册成功

curl http://127.0.0.1:8500/v1/catalog/service/userService

通过管理界面查看已注册的服务

健康检查

curl http://192.168.10.10:8500/v1/health/service/userService?passing

注册字段说明

{
  "ID": "userServiceId", //服务id
  "Name": "userService", //服务名
  "Tags": [              //服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
    "primary",
    "v1"
  ],
  "Address": "127.0.0.1",//服务注册到consul的IP,服务发现,发现的就是这个IP
  "Port": 8000,          //服务注册consul的PORT,发现的就是这个PORT
  "EnableTagOverride": false,
  "Check": {             //健康检查部分
    "DeregisterCriticalServiceAfter": "90m",
    "HTTP": "http://www.baidu.com", //指定健康检查的URL,调用后只要返回20X,consul都认为是健康的
    "Interval": "10s"   //健康检查间隔时间,每隔10s,调用一次上面的URL
  }
原文地址:https://www.cnblogs.com/biby/p/12872499.html