其他分享
首页 > 其他分享> > 【软件工程应用与实践】(7)JDchain对共识节点的更改操作

【软件工程应用与实践】(7)JDchain对共识节点的更改操作

作者:互联网

共识节点变更

借助BFT-SMaRT共识提供的Reconfig操作元语,JD Chain实现了在不停机的情况下快速更新共识网络拓扑,实现添加共识节点移除共识节点更新共识信息 等功能。

共识节点相关操作错误极容易导致整个网络不可用,甚至无法恢复,操作前请做好数据备份,务必谨慎操作,确保所有环境和指令正确

以下操作说明均以在部署好的如下单机四节点环境操作为例:

1.添加共识节点

1.1 生成身份信息

解压peerzip包作为新的参与方节点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

执行完成后会在peer4config/keys目录下生成new-node.priv/new-node.pub/new-node.pwd文件,分别保存公钥/私钥/私钥密码信息,用作新增节点的身份信息。

1.2 注册新节点

peer4bin目录下提供了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>

其中ipport为各个peerIP地址和启动端口

选出具有最新区块数据的共识节点作为复制节点。

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)上,主要操作流程如下:

操作前请确保变更到的端口未被占用

  1. 修改共识信息

如将peer2中账本j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP的共识IP127.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. 迁移节点数据

拷贝步骤1中127.0.0.1上与移出账本相关的所有数据(包括rocksdbruntime等等)到191.168.1.100上一致的部署目录。

请修改127.0.0.1peer2/config/ledger-binding.conf文件,去除移出的账本配置。若此节点上仅此一个账本,可关闭本节点进程。

修改191.168.1.100peer2/config/ledger-binding.conf文件,保留移出的账本配置。

  1. 启动节点

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