基础设施
生产部署需要三样共享基础设施:
多条链共用同一套基础设施:所有 Kafka topic、S3 键、etcd 键都以
chainID 开头。
形态一:单机验证
不需要 Kafka 和 S3。写节点开放trace 命名空间,leafage-evm 用 HTTP 模式轮询。适合本地开发和适配新链时的验证。
形态二:单链生产
资源规划(ETH 主网)
leafage-evm 的 QPS 与 CPU 核数近似线性。要提高查询吞吐,只扩这一个服务的 CPU 和内存即可。
至少 3000 IOPS,推荐 SSD。AWS 上 gp3 的默认 3000 IOPS / 125 MB/s 足够稳态运行(12 秒一个区块),但首次启动的两个阶段压力更高:快照解压受顺序写吞吐限制,快照恢复后的追赶受随机读写 IOPS 限制。预留 20–30% 容量余量。
写节点开启
--ancient.prune 可以显著降低磁盘占用:历史区块体和收据在离开最近 90000 块窗口后被裁剪。下游消费者读 S3,不依赖写节点保留历史区块体。需要 --syncmode full。形态三:多链集群
常见运维操作
新增一个查询节点
新增一个查询节点
- 从 S3 下载 RocksDB 快照并解压到
--db-path - 启动 leafage-evm,它会自动从 Kafka offset 或 S3 追赶到链头
- 启动时自注册到 etcd,consistency-checker 确认追上后把
stateType改为1 - nodex-proxy watch 到变更,健康检查通过后加入负载均衡池
下线一个查询节点
下线一个查询节点
停止进程即可。leafage-evm 退出时删除自己的 etcd 键;即使异常退出,consistency-checker 也会在轮询失败后把它标记为离线并删除。
切换写节点 Leader
切换写节点 Leader
通过 nodex-proxy 的管理接口:也可以直接改 etcd 的
{chainID}/writers/leader。切换后新 Leader 会等待 grace_period 再开始发布。版本切换
版本切换
版本模式下,修改 etcd 的
{chainID}/version:- consistency-checker 检测到版本变化后释放或争抢 singleton topic 的发布锁,并把 topic 对齐到新版本的进度
- nodex-proxy 把基础链 ID 的请求改写到
{chainId}-{version}的节点池
回退并重新同步
回退并重新同步
leafage-evm 的状态出现异常时,可以把链头回退到更早的区块,再从 S3 重新同步:
排查
参考
- leafage-evm 部署指南 — 含一键脚本、快照下载、目录结构
- nodex-proxy 部署指南 — Docker Compose、Kubernetes、systemd 与生产调优
- consistency-checker 部署说明