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
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!您可以按照以下步骤来下载和安装Consul: 1. 访问Consul的官方下载页面:https://www.consul.io/downloads 2. 在该页面中,您会看到多个版本的Consul可供选择。请选择适合您操作系统的版本,并点击下载链接。 3. 下载完成后,根据您的操作系统进行相应的安装步骤。 - Windows: - 将下载的Consul二进制文件移动到您喜欢存放应用程序的目录(例如`C:\Program Files\Consul`)。 - 打开命令提示符(CMD)或PowerShell,并导航到Consul二进制文件所在目录。 - 运行下面的命令以验证Consul是否正确安装: ``` consul --version ``` - macOS: - 将下载的Consul二进制文件移动到您喜欢存放应用程序的目录(例如`/usr/local/bin/`)。 - 打开终端,并运行下面的命令以验证Consul是否正确安装: ``` consul --version ``` - Linux: - 将下载的Consul二进制文件移动到您喜欢存放应用程序的目录,例如`/usr/local/bin/`。 - 打开终端,并运行下面的命令以验证Consul是否正确安装: ``` consul --version ``` 如果输出显示了Consul的版本信息,则表示安装成功。接下来,您可以根据Consul的文档进行配置和使用。 注意:以上是一个简单的Consul安装过程,具体安装步骤可能因您的操作系统而异。在安装之前,建议您查阅Consul的官方文档以获取更详细的安装指南。 希望对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值