consul 教程

目录

1.consul安装

     1.1 先安装go环境

     2.2  安装consul

2.开始使用

2.1运行consul agent

2.2 查看集群成员

2.3 注册服务

2.4 发现服务

3.Consul 集群

3.1 部署集群

3.2 启动代理

3.3 加入集群

3.4 离开集群

4 健康检查

4.1 设置健康检查文件

4.2 查询健康状况

5 KV Data

5.1 设置值

5.2 查询

5.3 删除

6 常用请求url

6.1 agent

6.2 status

6.3 catalog

7 进阶

7.1 配置gossip加密

7.2 autopilot

8 cli

8.1 catalog


1.consul安装

     1.1 先安装go环境

     2.2  安装consul

            wget https://releases.hashicorp.com/consul/1.4.0/consul_1.4.0_linux_amd64.zip

            unzip consul_1.4.0_linux_amd64.zip

            mv consul /usr/local/go/bin/

            consul -v //成功

2.开始使用

2.1运行consul agent

consul agent -dev

2.2 查看集群成员

consul members          -- -detailed 可查看详细信息

curl  http://localhost:8500/v1/catalog/nodes

2.3 注册服务

 mkdir /etc/consul.d              -- ".d"结尾指目录包含一组配置文件

 vi /etc/consul.d /web.json

{
  "service": {
    "name": "web",
    "tags": ["rails"],
    "address": "114.55.40.20",
    "port": 80
  }
}
consul agent -dev -config-dir=/etc/consul.d             --设置配置目录,启动代理

curl -X PUT -d '{"Datacenter":"dc1","Node":"agent-two","Address":"ebg.conzhu.net","Service":{"Service":"verify","port":80}}' http://localhost:8500/v1/catalog/register               -- 请求注册服务
curl -X PUT -d '{"Datacenter":"dc1","Node":"agent-two"}' http://localhost:8500/v1/catalog/deregister                                  -- 注销服务

结果

2.4 发现服务

 dig @127.0.0.1 -p 8600 web.service.consul              --使用DNS查询服务
 dig @127.0.0.1 -p 8600 web.service.consul SRV          --使用DNS查询服务,显示服务详情

结果

curl http://localhost:8500/v1/catalog/service/web        --api查询

  结果

curl http://localhost:8500/v1/health/service/web           --查询健康实例

结果

 

3.Consul 集群

3.1 部署集群

         必须:

         (1)集群节点设置名称 如: -node=agent-one

         (2)数据存储目录 如:data-dir=/tmp/consul

          指令详解:

          (1) -bind =<address>                                                     #绑定监听的地址:默认0.0.0.0

          (2)-data-dir=</path/to/data-dir>                                     #存储数据的目录

          (3)-config-dir =</path/to/config-dir>                               #注册服务配置目录

          (4)-bootstrap-expect=<num>                                         #延迟复制日志,直至预期数量的服务器陈宫加入

          (5)-enable-script-checks=<boolean>                             #是否允许外部脚本运行健康检查

          (6)-server

            --- join

          (7)-join=<address>                                                         #启动时自动加入集群

          (8)-retry-join=<adress>                                                   #类似 “-join” ,失败时尝试重新连接

          (10)-retry-interval=30                                                      #尝试连接等待的时间。默认:30s

          (11)-retry-max=3                                                             #尝试连接的最大次数。默认:不限制

       

3.2 启动代理

#启动服务代理
consul agent -server -data-dir=/tmp/consul -node=agent-one -bootstrap-expect=1 -config-dir=/etc/consul.d 
#启动客户端代理
consul agent -node=agent-two -data-dir=/tmp/consul -config-dir=/etc/consul.d -enable-script-checks=true

#启动客户端代理并加入集群
consul agent -node=agent-two -data-dir=/tmp/consul -config-dir=/etc/consul.d -enable-script-checks=true -join=172.17.0.4
#或
consul agent -node=agent-two -data-dir=/tmp/consul -config-dir=/etc/consul.d -enable-script-checks=true -retry-join=172.17.0.4

3.3 加入集群

consul join 172.17.0.4

 结果

查看集群节点

dns查询某个节点信息

dig @127.0.0.1 -p 8600 agent-one.node.consul

结果

3.4 离开集群

consul leave

执行结果

客户端代理结果

4 健康检查

4.1 设置健康检查文件

vi /etc/consul/web2-check.json
{
  "check": {
    "id": "web2",
    "name": "http web2 check",
    "http": "http://www.aa.com",
    "tls_skip_verify": false,
    "method": "GET",
    "interval": "5s",
    "timeout": "2s"
  }
}

结果:下面是出错的情况

4.2 查询健康状况

curl http://localhost:8500/v1/health/state/critical --api进行健康检查(可以在任一节点上运行)

结果

5 KV Data

5.1 设置值

consul kv put  mysql/config/max_binlog_size 100m                            --设置kv值(修改值会修改ModifyIndex)
consul kv put -cas -modify-index=19998 mysql/config/max_binlog_size 400m    --check-and-set的原子操作 

结果

5.2 查询

consul kv get mysql/config/max_binlog_size                --获取值
consul kv get -detailed  mysql/config/max_binlog_size     --获取详细值
consul kv get -recurse [prefix]                           --迭代查询匹配的结果,支持前缀匹配
consul kv get -detailed -recurse [prefix]                 --迭代查询匹配的详细结果

结果

5.3 删除

consul kv delete mysql/config/sync_binlog        --删除单个
consul kv delete  -recurse [prefix]              --批量删除匹配前缀的key

结果

6 常用请求url

6.1 agent

请求例子:curl http://localhost:8500/v1/agnect/services | python -m json.tool 
/v1/agent/checks                                --获取本地agent注册的所有检查(包括配置文件和http注册)
/v1/agent/services                              --获取本地agent注册的所有服务
/v1/agent/members                               --获取集群中的成员
/v1/agent/self                                  --获取本地agent的配置和成员信息
/v1/agent/join/<address>                        --触发本地agent加入node
/vq/agent/force-leave/<node>                    --强制删除node
/v1/agent/check/register                        --在本地agent增加一个检查项,使用PUT方法传输一个json格式的数据
/v1/agent/check/deregister/<checkID>            --注销一个本地agent的检查项
/v1/agent/check/pass/<checkID>                  --设置一个本地检查项的状态为passing
/v1/agent/check/warn/<checkID>                  --设置一个本地检查项的状态为warning
/v1/agent/check/fail<checkID>                   --设置一个本地检查项的状态为critical
/v1/agent/service/register                      --在本地agent增加一个新的服务项,使用PUT方法传输一个json格式的数据
/v1/agent/service/deregister/<serviceID>        --注销一个本地agent的服务项

6.2 status

/v1/status/leader                --获取当前集群的leader(如:"172.17.0.4:8300")
/v1/status/peers                 --获取当前集群中的同事(如:["172.17.0.4:8300"])

6.3 catalog

/v1/catalog/register                          --注册一个新的service、node、check
/v1/catalog/deregister                        --注销一个service、node、check
/v1/catalog/datacenters                       --列出知道的数据中心
/v1/catalog/nodes                             --在给定的数据中心列出node
/v1/catalog/services                          --在给定的数据中心列出service
/v1/catalog/service/<service>                 --查看某个服务的信息
/v1/catalog/node/<node>                       --查看某个节点的信息

7 进阶

7.1 配置gossip加密

consul keygen                            -- 随机生成16bytes的字符并已转为base64
# 编写服务配置文件,保存在"/etc/consul.d"目录中
{
  "datacenter": "dc1",
  "node_name": "agent_one",
  "data_dir": "/opt/consul",
  "log_level": "INFO",
  "server": true,
  "encrypt": "83XxiHG3OmMng7qV8Gtaww==",
  "encrypt_verify_incoming": false,
  "encrypt_verify_outgoing": false
}
#启动服务
consul agent -config-dir=/etc/consul.d                

   结果

# 编写客户端配置文件,保存在"/etc/consul.d"目录,注意"disable_keyring_file"
{
  "datacenter": "dc1",
  "data_dir": "/tmp/consul",
  "log_level": "INFO",
  "node_name": "agent-two",
  "encrypt": "83XxiHG3OmMng7qV8Gtaww==",
  "disable_keyring_file": true,
  "encrypt_verify_incoming": true,
  "encrypt_verify_outgoing": true,
  "retry_join": ["172.17.0.4"]
}
#启动客户端
consul agent -config-dir=/etc/consul.d

7.2 autopilot

#默认配置
{
    "cleanup_dead_servers": true,
    "last_contact_threshold": "200ms",
    "max_trailing_logs": 250,
    "server_stabilization_time": "10s",
    "redundancy_zone_tag": "",
    "disable_upgrade_migration": false,
    "upgrade_version_tag": ""
}
#获取autopilot配置信息
consul operator autopilot get-config

#设置autopilot
conusl operator autopilot set-config —cleanup-dead-servers=false [...]
#查看健康状态(测试只返回已服务方式启动的节点)
 curl http://localhost:8500/v1/operator/autopilot/health   

    一个server服务认定为健康,满足以下要求:

8 cli

8.1 catalog

consul catalog nodes                        -- 获取所有节点信息
consul catalog services                     -- 获取所有服务
consul catalog datacenters                  -- 获取所有数据中心

### 配置文件例子

{
  "datacenter": "dc1",
  "data_dir": "/tmp/consul",
  "log_level": "INFO",
  "log_file": "/var/lib/consul/log/consul",
  "node_name": "agent-two",
  "pid_file": "/var/lib/consul/consul.pid",
  "encrypt": "83XxiHG3OmMng7qV8Gtaww==",
  "disable_keyring_file": true,
  "encrypt_verify_incoming": true,
  "encrypt_verify_outgoing": true,
  "retry_join": ["172.17.0.4"],
  "retry_interval": "30s",
  "retry_max": 0
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廖钺焕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值