Consul 使用记录

本文围绕Consul集群模式展开,介绍了参数含义,如-server、-bind等。详细阐述了通过命令行和配置文件两种方式建立Consul集群的方法,还解释了http地址绑定127.0.0.1的原因。此外,提及了查看集群状态、备份和导入等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. consul 集群模式

consul agent -server -data-dir=./data/ -node=s1 -bind=192.168.217.86 -ui -rejoin -client=0.0.0.0 -bootstrap-expect=1 -ui

参数介绍:

  • -server 表示是以服务端身份启动,去掉这个参数表示 client 模式
  • -bind 表示绑定到哪个ip(有些服务器会绑定多块网卡,可以通过bind参数强制指定绑定的ip),一般是本机IP
  • -client 指定客户端访问的ip(consul有丰富的api接口,这里的客户端指浏览器或调用方),0.0.0.0表示不限客户端ip
  • -bootstrap-expect=3 表示server集群最低节点数为3,低于这个值将工作不正常(注:类似zookeeper一样,通常集群数为奇数,方便选举,consul采用的是raft算法)
  • -data-dir 表示指定数据的存放(持久化)目录(该目录必须存在)
  • -node 表示节点在web ui中显示的名称

启动成功后,终端窗口不要关闭,可以在浏览器里,访问下,类似 http://192.168.212.73:8500/, 正常的话,可以正常打开web界面。

为了防止终端关闭后,consul退出,可以在刚才命令上,加点东西,类似:nohup xxx > /dev/null 2>&1 &

1.1. 命令行建立 consul 集群

服务端1:

consul agent -server -bootstrap-expect=2 -data-dir=./data/ -bind=192.168.217.134 -client=0.0.0.0 -node=s1 -ui

服务端2:

consul agent -server -bootstrap-expect=2 -data-dir=./data/ -bind=192.168.217.72 -client=0.0.0.0 -join 192.168.217.134 -node=s2 -ui

服务端3:

consul agent -server -bootstrap-expect=2 -data-dir=./data/ -bind=192.168.217.86 -client=0.0.0.0 -join 192.168.217.134 -node=s3 -ui

客户端1:

consul agent -data-dir=./data/ -bind=192.168.217.87 -client=0.0.0.0 -join 192.168.217.134 -node=c1 -ui

1.2. 配置文件方式建立 consul 集群

在这里插入图片描述

例:

{
  /* 表示server集群最低节点数 */
  "bootstrap_expect": 2,
  /* 表示该节点绑定的地址, 默认0.0.0.0 */
  "bind_addr": "192.168.217.86",
  /* 访问该节点的地址, 默认127.0.0.1*/
  "client_addr": "0.0.0.0",
  /* 访问该节点的数据中心*/
  "datacenter": "data-center-1",
  /* 必须, 数据保存的地址*/
  "data_dir": "/home/awifi/consul-server/data",
  "addresses": {
    /* 表示该节点绑定的dns地址, 以空格分隔的要绑定的地址列表*/
    "dns": "192.168.217.86",
    /* 表示该节点绑定的http地址, 以空格分隔的要绑定的地址列表*/
    "http": "192.168.217.86 127.0.0.1"
  },
  /* 节点名,必须*/
  "node_name": "server:192.168.212.73:8500",
  "rejoin_after_leave": true,
  /* 表示该节点类型是server*/
  "server": true,
  /* 允许在第一次尝试失败时重试连接 */
"retry_join": [
        "192.168.217.72",
        "192.168.217.134"
    ],
  /* 表示开启web界面*/
  "ui": true
}

然后在另一台机器上执行
./consul join 192.168.217.86
或者可以加入配置

{
  "start_join":[],
  "retry_join":[]
}

start_join:等同于 命令行参数-join : 表示启动时加入的集群地址
retry_join:等同于 命令行参数-retry-join : 允许在第一次尝试失败时重试连接,该列表可以包含IPv4,IPv6或DNS地址。

1.2.1. 为什么 http 地址要绑定 127.0.0.1 ?

如果不绑定127.0.0.1,在该服务器上就会无法使用除 ./consul agent 以外的命令,

例如:
组建集群模式的核心命令:consul join 192.168.217.86
优雅的注销节点的命令: consul leave
在这里插入图片描述

2. 查看集群状态

consul operator raft list-peers

运行结果:

查看集群状态

运行结果红色方框部分可以看出集群模式中谁是 leader

备份

consul kv export > vault.json

导入

consul kv import @vault.json
### 如何清除Consul中的连接记录 为了管理和服务于分布式环境下的服务发现与配置,Consul提供了多种功能来处理键值存储、健康检查以及服务注册等操作。然而,在某些情况下可能需要清理不再使用连接记录或历史数据。 对于想要清除特定的服务实例或者节点的相关信息,可以采取以下几种方式: #### 使用HTTP API删除单个服务实例 通过向`/v1/catalog/deregister`发送POST请求,并提供包含地址、服务ID等相关参数的JSON对象来注销指定的服务实例[^1]。 ```json { "Node": "node_name", "ServiceId": "service_id" } ``` #### 清除整个节点上的所有服务条目 如果目标是移除某个节点上所有的服务登记,则可以通过调用`/v1/agent/self`获取当前代理的信息,再利用返回的结果构建合适的payload提交给上述提到的deregister接口实现目的;另外也可以直接停止该节点对应的consul进程让其自动完成下线流程。 #### 移除过期会话及其持有的锁资源 当存在长时间未更新状态的会话时(比如客户端异常断开),这些遗留下来的会话可能会占用不必要的空间甚至影响其他正常工作的组件。此时应该考虑使用`sessions/destroy/{session}`API销毁有问题的会话从而释放关联的锁定项和其他依赖关系。 需要注意的是,以上方法主要针对的是活动的服务列表和临时性的元数据维护工作。至于更深层次的历史事件日志或者其他持久化存储部分的数据清理则通常不在默认设置范围内,这往往涉及到具体的部署架构设计和技术选型决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值