配置项
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 拉取配置更新:
GET /v1/config/longpoll?since=<generation>。当配置变更时,leader 会立即返回;超时(30 秒)则重新发起请求;网络错误时会退避重试。
审计日志
每次配置变更事件(验证、应用、拒绝)都会写入结构化日志,包含:- 操作名称(
api、api_validate、cluster_api) - 对端地址
- 结果(
applied、rejected_restart_required、rejected_quorum) - 旧 generation 与新 generation
- 配置差异摘要
故障排查
所有请求都返回 401 Unauthorized
所有请求都返回 401 Unauthorized
POST /v1/cluster/config 返回 503
POST /v1/cluster/config 返回 503
说明当前节点不是
leader 角色。只有 leader 可以执行集群配置下发。请检查 control_plane.role: leader。如果当前节点是 follower,请把请求发给 leader。集群配置提交出现部分成功
集群配置提交出现部分成功
响应中的
committed 和 failed 会给出各节点结果。失败节点会在下一次长轮询或 gossip 同步时追上。如果 committed 小于 quorum,整次提交会被拒绝,且不会有节点应用新配置。长轮询总是立刻超时或立刻返回
长轮询总是立刻超时或立刻返回
请确认
since 使用的是当前 generation。如果 since 小于当前 generation,服务端会立即返回 200 和当前配置。建议先调用 GET /v1/config,读取 X-Config-Generation,再把它作为 since。XDP 相关端点返回 503
XDP 相关端点返回 503
说明 XDP 没有初始化成功,可能是内核不支持、网卡不支持原生 XDP,或配置里没启用 XDP。可先调用
GET /v1/xdp/status 判断运行状态。Gossip 相关端点返回 503
Gossip 相关端点返回 503
说明 gossip 未启用。控制面这部分能力依赖
gossip 配置。如果你只需要 leader/follower 同步,可用 pull_from + 长轮询模式。
