集群令牌环
令牌环网 · 转发编排
{{ stateLabel }}
{{ aliveCount }} 成员
上次同步 {{ lastSyncAgo }}
♔ 本机 leader
本节点加入密钥
{{ ring.nodeKey }}
其他节点通过本节点加入集群时需提供此密钥
环节点○
{{ ring.nodes.length }}
活跃 {{ aliveCount }} · 离线 {{ ring.nodes.length - aliveCount }}
活跃转发→
{{ ring.topology.length }}
待办命令⚙︎
{{ ring.pending.length }}
本节点为初始 leader,已就绪;可直接创建,或输入对端地址加入既有集群
本节点已脱离集群,可创建新集群或加入既有集群
退出后本节点仅保留 localOnly 转发;可重新创建/加入
○环拓扑
{{ shortId(n.id) }}
本机
LEADER
离线
负载 {{ Math.round(n.load.memPct + n.load.netPct) }}
{{ n.addr }}
→
环节点为空(已脱离)
⚙︎令牌命令(待执行)
{{ t.id }}
{{ taskCmdLabel(t) }}
→
移除节点 {{ shortId(t.removeNode) }}
{{ t.local.name }}
→
{{ t.remote.name }}
:{{ t.link?.remotePort }}
⚖负载均衡
{{ bal.dryRun ? '观察模式(不迁移)' : '已启用(会迁移)' }}
超载阈值:Score > 均值 × {{ bal.ratio }}
需持续:{{ Math.round(bal.sustainSec / 60) }} 分钟
设 W4F_BALANCE_MODE=on 才会真正迁移
{{ shortId(n.id) }}
本机
LEADER
离线
超载
转发 {{ n.forwards }}
内存 {{ n.memPct.toFixed(1) }}%
网络 {{ n.netPct.toFixed(1) }}%
Score {{ n.score.toFixed(1) }}
暂无节点负载数据
迁移进行中
{{ bal.inFlight.local }}:{{ bal.inFlight.remotePort }}
从 {{ shortId(bal.inFlight.from) }} 迁往 {{ shortId(bal.inFlight.to) }}
将迁移
{{ bal.wouldMigrate.local }}:{{ bal.wouldMigrate.remotePort }}
从 {{ shortId(bal.wouldMigrate.from) }} 迁往 {{ shortId(bal.wouldMigrate.to) }}
等待确认
失衡已持续 {{ Math.floor((nowMs / 1000 - bal.overloadedSince) / 60) }} 分钟,
需连续 {{ Math.round(bal.sustainSec / 60) }} 分钟后才会迁移
已均衡
各节点负载在阈值内,无需迁移
→活跃转发拓扑
{{ t.taskId }}
{{ t.local.name }}
→
{{ t.remote.name }}
:{{ t.link?.remotePort }}
owner: {{ shortId(t.ownerId) }}
{{ t.active ? '运行中' : '已停' }}
暂无活跃转发(画布编辑后将经令牌分发)
≣集群日志
{{ ring.log.length }} 条
JSON(完整结构)
文本(可读 TSV)
CSV(审计用,Excel 可开)
JSON(完整结构)
CSV(审计用,逐行展开)
#{{ e.seq }}
{{ formatTs(e.at) }}
{{ shortId(e.node) }}
{{ kindLabel(e.kind) }}
{{ detailOf(e) }}
日志为空
集群未启动(无环节点)
填入对端节点可被本机路由到达的真实 IP:port(或域名:port),本节点将向对端请求加入并采纳其环状态,令牌到达即并入环。需提供对端节点的加入密钥以通过验证。