Configure a Consul agent | Consul | HashiCorp Developer

Configure a Consul agent | Consul | HashiCorp Developer

Agent configuration is the process of defining server and client agent properties with CLI flags and configuration files. Learn what properties can be configured on reload and how Consul sets precedence for configuration settings.

访问网站
我的收藏188 次访问更新于 a month ago反馈
Configure a Consul agent | Consul | HashiCorp Developer screenshot

详细介绍

Configure a Consul agent

简介

Consul agent(Consul 代理)是运行在节点上的长期守护进程,是 Consul 运作的核心单元。代理具有高度可配置性,能够将 Consul 部署到任意基础设施中。本文档介绍了 Consul agent 的运行模式、生命周期、故障处理、退出机制、部署要求以及启动方式等基础知识。

主要功能与运行模式

  • Server 模式与 Client 模式:代理可运行在 server 或 client 模式下。Server 节点组成控制平面的服务器集群,负责维护集群状态;Client 节点是轻量级进程,构成集群的大部分,自身维持极少状态,并在每个运行服务的节点上运行。
  • 共识与仲裁:Server 节点基于 Raft 协议参与共识仲裁(quorum),在故障时提供强一致性与可用性,建议在专用实例上运行。
  • Agent 生命周期
    • 启动:代理手动或自动启动,初始 unaware 集群其他节点。
    • 加入:通过 join 命令或 auto-join 配置发现对等节点。
    • Gossip:通过 gossip 协议使全集群最终互相感知。
    • 复制:若为 server,现有 server 开始向新节点复制。
  • 节点故障与崩溃:网络故障导致不可达节点被标记为 failed;代理崩溃与网络故障同等处理,服务目录更新为 failed 状态,但服务保持注册以允许临时中断。
  • 节点退出:优雅退出发送 departure 通知,状态标记为 left,立即注销关联服务;server 离开时停止复制。Consul 通过 reaping(默认 72 小时间隔)自动清理 failed/left 节点,不建议修改该间隔。
  • 启动代理:使用 consul agent <options> 命令,最低需指定 -data-dir 或通过 -config-file/-config-dir 提供配置;-dev 开发者模式不可用于生产。

适用场景与部署要求

  • 部署密度:每个服务器或主机运行一个 Consul agent,可位于独立 VM 或容器;至少 1 个 server agent,推荐 3–5 个。
  • 基础设施要求:参考 Server Performance、Required Ports 文档;生产环境参见 Datacenter Deploy 教程。
  • 网络延迟要求:基于 gossip 协议,所有 agent 间通信平均 RTT 不超过 50ms,99% 流量 RTT 不超过 100ms(仅限 gossip,不含 RPC/HTTP/DNS 等)。

启动示例

bash 复制代码
$ consul agent -data-dir=tmp/consul -dev

启动后输出包含节点名、数据中心、Server 标识、Client/Cluster 地址及 Serf 成员加入事件等关键信息。