ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-28 20:30:16  阅读:224  来源: 互联网

标签:127.0 0.1 端口 JDchain 软件工程 共识 账本 节点


共识节点变更

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

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

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

  • ledger j5m4yF1uyxaMwwBWKaqJqyHkKViXs8LGe9ChWvPs1CqdjP
  • peer0 启动端口 7080,共识端口10080
  • peer1 启动端口 7081,共识端口10081
  • peer2 启动端口 7082,共识端口10082
  • peer3 启动端口 7083,共识端口10083
  • 网关 服务端口 8080

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 <网关端口>
  • 2.移除共识节点

在多于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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有