Table of Contents

部署形态矩阵

六种标准形态共用同一份 worker 产物,差别只在 worker.json 的装配段。本页给每种形态的 最小装配骨架;磁盘卷/管理口等共通字段见单机部署,集群组网细节见集群部署。

形态 → 装配对照

形态 最少节点 角色布局 端口构成
Standalone · 单口 1 台 1 进程 全部合一 最少 1 个口(数据+管理+UI 合一;Tier=InProcess 无口)
Standalone · 严格分离 1 台 1 进程 全部合一 数据口+管理口
生产集群(标准) 4 台 纯控制 Voter×3 + Learner×1 起 CP:管理口+Tier 口;DP:N 数据口+Tier 口
生产集群(预算敏感) 3 台 Voter×3 兼流量 每节点:N 数据口+Tier 口
+Witness(可选) +1 台轻载 第三票防脑裂 仅 Tier 口
Kubernetes 同生产集群 同上 guardian 口=0,探针指管理口

Standalone(单口)

不配 admin.listen =兼容模式:管理面与数据面同口复用。

{ "volume": "memory:", "listen": { "port": 5010 } }

Standalone(严格分离)

{
  "volume": "virtual:///var/lib/traffic/config.tier",
  "resourceKey": "file:///etc/traffic/resource.key",
  "listen": { "port": 5010 },
  "admin": { "listen": "127.0.0.1:7901" }
}

生产集群 · 纯控制节点(CP)

raft 段三要素齐备:nodeId、listen(Tier 口)、members(含自身与 Voter 全集)。

{
  "volume": "virtual:///var/lib/traffic/config.tier",
  "resourceKey": "file:///etc/traffic/resource.key",
  "admin": { "listen": "10.0.0.11:7901" },
  "raft": {
    "role": "voter", "nodeId": "cp1", "listen": "10.0.0.11:7910",
    "members": {
      "cp1": "10.0.0.11:7910",
      "cp2": "10.0.0.12:7910",
      "cp3": "10.0.0.13:7910"
    }
  }
}

纯控制=不配数据口(无 listen.port)——Voter 节点零客户端可达面, 编译、发布编排、管理面照常。三台 cp1/cp2/cp3 同 members 表、各自 nodeId/listen。

生产集群 · 数据节点(DP)

{
  "volume": "virtual:///var/lib/traffic/config.tier",
  "resourceKey": "file:///etc/traffic/resource.key",
  "listen": { "port": 5010 },
  "raft": {
    "role": "learner", "nodeId": "dp1", "listen": "10.0.0.21:7910",
    "members": {
      "cp1": "10.0.0.11:7910",
      "cp2": "10.0.0.12:7910",
      "cp3": "10.0.0.13:7910"
    }
  }
}

DP 的 members 表=Voter 全集(learner 不在表中——加入集群用 cluster member add,见集群部署)。

Witness(可选第三票)

{
  "volume": "virtual:///var/lib/traffic-witness/config.tier",
  "resourceKey": "file:///etc/traffic/resource.key",
  "raft": {
    "role": "witness", "nodeId": "w1", "listen": "10.0.0.14:7910",
    "members": { "cp1": "10.0.0.11:7910", "cp2": "10.0.0.12:7910", "cp3": "10.0.0.13:7910" }
  }
}

Witness 投票计入多数派但不存全量日志——轻载机即可,用于三台预算下防脑裂。

预算敏感:Voter 兼流量

标准 CP 装配加上 listen.port 即兼跑流量(兼容模式)——接受流量高峰与共识 心跳同进程的耦合,3 台即可组网。

存储介质选型

介质 spec 定位
virtual(虚拟文件系统) virtual:///路径/config.tier 生产缺省推荐——单工件卷(.tier 文件/块设备),自持崩溃一致性(不委托 OS),数据损坏面不依赖 OS 文件系统;既是活卷又是存档(dd 快道迁移)
local(本地文件系统) local:///路径 仅当运维需要可视化目录树(直接浏览数据文件)时使用
memory memory: 开发/验证——重启即清,无需 resourceKey

装配规则速记

  • raft.role 限 learner|voter|witness|none(缺省 none=Standalone 本地卷);
  • role≠none 时 nodeId/listen/members 必配,缺任一=启动拒绝(退出码 10);
  • dataPlaneOnly/controlOnly 两个布尔开关对应纯数据/纯控制形态(互斥);
  • 所有端口显式配置,无默认值;
  • 非 memory 卷必须配 resourceKey(资源加密密钥——缺失=启动拒绝)。

下一步

  • 集群成员的加入/移除/角色变更(运行时)→ 集群部署
  • 每个端口为什么这么划 → 端口模型