如何在运行中的Hyperledger Fabric网络中新增orderer节点?
向运行中的Solo共识Hyperledger Fabric生产网络新增Orderer节点操作指南
注意:Solo本身是单节点测试用途共识,原生不支持多Orderer集群,新增节点前必须先将共识算法从Solo迁移为EtcdRaft,整个操作过程无需停机,可在线完成。
1. 前置准备
- 所有操作建议先在和生产环境配置一致的测试环境完整执行一遍,验证无误后再操作生产网络
- 提前使用现有Fabric CA签发新Orderer节点的证书材料,保证证书根信任链和现有Orderer组织证书完全一致
- 备份现有Orderer节点的账本数据、配置区块、私钥证书,避免操作失误导致数据丢失
- 确认所有Peer节点和现有Orderer节点运行状态正常,无堆积未完成的交易
2. 迁移系统通道共识为EtcdRaft
首先提取当前系统通道的最新配置区块,修改共识配置和Orderer节点列表:
- 切换到操作客户端环境,配置好Orderer访问的环境变量,执行以下命令提取系统通道配置:
# 获取最新系统通道配置区块 peer channel fetch config config_block.pb -o <现有Orderer地址> -c <系统通道名称> --tls --cafile <Orderer根CA证书路径> # 解码配置区块为JSON格式 configtxlator proto_decode --input config_block.pb --type common.Block --output config_block.json jq .data.data[0].payload.data.config config_block.json > config.json
- 修改
config.json配置:将Orderer > ConsensusType > Type字段值从Solo改为etcdraft,同时在Consenters数组中补充现有Orderer和待新增Orderer的节点信息,包含服务地址、监听端口、TLS证书内容 - 计算配置变更差值,生成配置更新交易并收集对应组织的管理员签名,提交到系统通道生效
配置生效后现有网络会自动切换为单节点EtcdRaft共识,原有交易处理逻辑不受影响
3. 启动新Orderer节点
- 编写新Orderer节点的
orderer.yaml配置文件,指定系统通道名称、现有Orderer集群地址、本地证书路径,将General > Bootstrapping Method设置为none,允许节点从现有集群同步区块数据 - 启动新Orderer节点进程,启动后节点会自动从现有Orderer集群同步全量账本数据
- 执行以下命令验证新节点运行状态,确认节点区块高度和现有Orderer节点一致:
osnadmin channel list -o <新Orderer管理地址>:<管理端口> --ca-file <CA根证书路径> --client-cert <管理员客户端证书路径> --client-key <管理员客户端密钥路径>
4. 更新所有应用通道配置
- 针对网络中已经创建的所有应用通道,重复步骤2的配置提取、修改、提交流程,将新Orderer节点的服务地址和TLS证书添加到应用通道的
OrdererAddresses和Consenters列表中 - 逐一验证所有应用通道在新Orderer节点上的区块高度和现有节点完全一致,执行几笔测试交易确认读写集生成、共识出块、账本同步逻辑正常
5. 生产环境校验
- 临时关闭原有旧Orderer节点1-2分钟,测试网络是否可以正常提交交易、查询区块,确认EtcdRaft集群自动选主逻辑正常
- 所有节点运行稳定24小时无异常后,清理临时生成的配置文件、签名交易文件
内容的提问来源于stack exchange,提问作者Aya Elhawary
相关产品推荐
相关产品推荐

