【软件工程应用与实践】(7)JDchain对共识节点的更改操作
作者:互联网
共识节点变更
借助BFT-SMaRT
共识提供的Reconfig
操作元语,JD Chain
实现了在不停机的情况下快速更新共识网络拓扑,实现添加共识节点,移除共识节点,更新共识信息 等功能。
共识节点相关操作错误极容易导致整个网络不可用,甚至无法恢复,操作前请做好数据备份,务必谨慎操作,确保所有环境和指令正确
以下操作说明均以在部署好的如下单机四节点环境操作为例:
ledger
j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP
peer0
启动端口7080
,共识端口10080
peer1
启动端口7081
,共识端口10081
peer2
启动端口7082
,共识端口10082
peer3
启动端口7083
,共识端口10083
网关
服务端口8080
1.添加共识节点
1.1 生成身份信息
解压peer
的zip
包作为新的参与方节点peer4
。使用bin
目录下keygen.sh
脚本生成公私钥信息:
$ ./keygen.sh -n new-node
# 输入私钥密码
Input password:
# 是否保存Base58编码后的私钥密码信息
Do you want to save encode password to file? Please input y or n ...y
执行完成后会在peer4
中config/keys
目录下生成new-node.priv
/new-node.pub
/new-node.pwd
文件,分别保存公钥/私钥/私钥密码信息,用作新增节点的身份信息。
1.2 注册新节点
peer4
中bin
目录下提供了reg-parti.sh
注册参与方脚本:
./reg-parti.sh -ledger <账本HASH> -pub <新节点公钥> -priv <新节点私钥> -pass <新节点私钥密码> -name <新节点名称> -existpub <链上已存在用户公钥> -existpriv <链上已存在用户私钥> -existpass <链上已存在用户私钥密码> -host <网关IP> -port <网关端口>
在多于4个共识节点的共识网络中,才允许进行节点的移除操作
在进行节点的移除操作时,要求暂停向共识网络中发起新的业务数据上链请求
2.1 确定复制节点
查询每个共识节点的账本信息:
curl http://<ip>:<port>/ledgers/<ledgerHash>
其中ip
和port
为各个peer
的IP
地址和启动端口
选出具有最新区块数据的共识节点作为复制节点。
2.2 移除节点
peer
包中bin
目录下提供了deactive-parti.sh
移除节点脚本:
./reg-parti.sh -ledger <账本HASH> -participantAddress <待移除节点地址> -httphost <待移除节点的http启动IP地址> -httpport <待移除节点的http启动Port> -synchost <数据同步节点IP> -syncport <数据同步节点端口> -debug
执行此操作可将peer4
从该共识网络中移除,不再参与共识服务。
2.3 查询节点状态
查询网关接口,获取参与方状态信息:
curl http://<网关ip>:<网关port>/ledgers/<账本hash>/participants
参与方状态为非CONSENSUS
,说明操作成功。
3.更新共识信息
通过[激活节点](#6. 激活新节点)操作除了激活新增的节点外,还可以动态修改已经处于激活状态的共识节点的IP
和共识端口
信息,从而实现本机的共识端口变更,不同机器之间进行账本迁移
。
在进行节点信息变更时,要求暂停向共识网络中发起新的业务数据上链请求
3.1 变更共识端口
操作前请确保变更到的端口未被占用
如将peer1
共识端口由10082
修改为10182
,操作指令如下:
./active-parti.sh -ledger j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP -httphost 127.0.0.1 -httpport 7081 -consensushost 127.0.0.1 -consensusport 10182 -synchost 127.0.0.1 -syncport 7080
指令成功执行后,peer1
的共识端口将自动变更为10182
。
3.2 账本迁移
账本迁移指将一台机器(IP
)上的共识节点迁移到另一台机器(IP
)上,主要操作流程如下:
操作前请确保变更到的端口未被占用
- 修改共识信息
如将peer2
中账本j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP
的共识IP
由127.0.0.1
修改为192.168.1.100
(另一台机器),操作指令如下:
./active-parti.sh -ledger j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP -httphost 127.0.0.1 -httpport 7082 -consensushost 192.168.1.100 -consensusport 10084 -synchost 127.0.0.1 -syncport 7080 -shutdown
特别注意:-shutdown
为必填选项,否则将导致整个网络需要重启。
指令成功执行后,127.0.0.1
上账本j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP
节点将不再参与此账本的共识服务。
- 迁移节点数据
拷贝步骤1中127.0.0.1
上与移出账本相关的所有数据(包括rocksdb
,runtime
等等)到191.168.1.100
上一致的部署目录。
请修改127.0.0.1
上peer2/config/ledger-binding.conf
文件,去除移出的账本配置。若此节点上仅此一个账本,可关闭本节点进程。
修改191.168.1.100
上peer2/config/ledger-binding.conf
文件,保留移出的账本配置。
- 启动节点
在191.168.1.100
上执行peer2/bin
目录下peer-startup.sh
脚本启动节点。
查询网关接口:
curl http://<网关ip>:<网关port>/ledgers/<账本hash>/settings
查看账本各共识节点的相关信息。
标签:127.0,0.1,端口,JDchain,软件工程,共识,账本,节点 来源: https://blog.csdn.net/qq_57499230/article/details/122201789