跳转到主要内容

配置项

control_plane:
  enabled: true           # 默认 false,需要显式开启
  bind: "127.0.0.1:22100" # 默认地址
  auth_token: "your-secret-token"
  role: standalone    # standalone | leader | follower
control_plane 下所有字段变更都需要重启进程生效。

鉴权

所有请求都必须经过鉴权:
  • 配置了 auth_token 任何来源 IP 都必须发送 Authorization: Bearer <token>,并使用常量时间比较。
  • 未配置 auth_token 仅允许来自回环地址(127.0.0.1::1)的请求,不需要鉴权头。
未授权请求会返回 401 Unauthorized

节点角色

角色行为
standalone仅在本节点应用配置
leader可通过 /v1/cluster/config 向集群节点下发配置
follower长轮询 leader 拉取配置

常见响应码

状态码含义
200成功
304配置未变化(ETag/长轮询场景)
400错误请求(JSON 解析或编译失败)
401未授权
403禁止访问(例如非 leader 调用集群下发)
404未知端点
409配置合法但包含需重启字段
503必要子系统未运行(gossip、XDP 或 quorum 不满足)

Follower 配置

role: follower 时,Arc 会自动从 leader 拉取配置更新:
control_plane:
  role: follower
  pull_from: "http://arc-leader:22100"
  longpoll_timeout_ms: 30000
follower 会向 leader 发起 GET /v1/config/longpoll?since=<generation>。当配置变更时,leader 会立即返回;超时(30 秒)则重新发起请求;网络错误时会退避重试。

审计日志

每次配置变更事件(验证、应用、拒绝)都会写入结构化日志,包含:
  • 操作名称(apiapi_validatecluster_api
  • 对端地址
  • 结果(appliedrejected_restart_requiredrejected_quorum
  • 旧 generation 与新 generation
  • 配置差异摘要

故障排查

如果配置了 auth_token,每个请求都要带 Authorization: Bearer <token>。如果未配置 auth_token,控制面只接受回环地址(127.0.0.1::1)请求。请确认 control plane 的绑定地址符合你的访问方式。
说明当前节点不是 leader 角色。只有 leader 可以执行集群配置下发。请检查 control_plane.role: leader。如果当前节点是 follower,请把请求发给 leader。
响应中的 committedfailed 会给出各节点结果。失败节点会在下一次长轮询或 gossip 同步时追上。如果 committed 小于 quorum,整次提交会被拒绝,且不会有节点应用新配置。
请确认 since 使用的是当前 generation。如果 since 小于当前 generation,服务端会立即返回 200 和当前配置。建议先调用 GET /v1/config,读取 X-Config-Generation,再把它作为 since
说明 XDP 没有初始化成功,可能是内核不支持、网卡不支持原生 XDP,或配置里没启用 XDP。可先调用 GET /v1/xdp/status 判断运行状态。
说明 gossip 未启用。控制面这部分能力依赖 gossip 配置。如果你只需要 leader/follower 同步,可用 pull_from + 长轮询模式。