fabric网络在创建时就已经确定了初始的节点数量,而在实际应用场景中可能会需要在某个组织中动态增加节点。这里以balance-transfer v1.0为例(2 Org,4 Peer),介绍如何在org1中加入第3个peer节点。

一、追加新节点的身份信息

首先需要在组织org1的MSP目录中追加新节点的证书和私钥信息,主要是用到cryptogen工具(v1.1.0以上版本)

1.修改cryptogen.yaml文件(或者直接新建一个文件)中Template字段里的count参数,设置为需要该组织中存在的节点总数,可一次增加多个节点。

这里只在org1加入一个节点,所以cryptogen.yaml文件修改部分如下:

PeerOrgs:
- Name: Org1
Domain: org1.example.com
CA:
Hostname: ca
Template:
Count: 3
SANS:
- "localhost"
Users:
Count: 1

2.执行extend命令完成追加操作

在artifacts/channel目录下执行:

./cryptogen extend --config=./cryptogen.yaml

注:--config参数应以实际情况下配置文件的名称及路径为准

二、编写新节点的docker配置文件

接下来需要编写docker配置文件用于启动新节点,内容较为简单,只需要在已有节点的配置上稍作修改即可,注意避免容器端口的冲突。

这里我将新节点的配置文件命名为new-peer.yaml,放置于artifacts目录下,以下是文件内容:

version: '2'

services:

  peer2.org1.example.com:
container_name: peer2.org1.example.com
extends:
file: base.yaml
service: peer-base
environment:
- CORE_PEER_ID=peer2.org1.example.com
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_ADDRESS=peer2.org1.example.com:7051
ports:
- 7151:7051
- 7153:7053
volumes:
- ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/:/etc/hyperledger/crypto/peer

启动新节点容器,在配置文件所在目录下执行:

docker-compose -f new-peer.yaml up -d

三、修改网络配置文件

网络配置文件network-config.json用于帮助应用程序获取网络节点的地址等信息,是app与节点通信的关键,所以需要在该配置文件中增加新节点的信息。

注:balance-transfer 1.1版本后已改为network-config.js文件。

在json文件的org1部分的peers字段后添加"peer3"的信息,注意ip和端口等信息需要与上述docker配置文件中保持一致,内容如下:

"peer3": {
"requests": "grpcs://localhost:7151",
"events": "grpcs://localhost:7153",
"server-hostname": "peer2.org1.example.com",
"tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/tls/ca.crt"
}

四、将新节点加入通道

此时新增节点已经加入了区块链网络,但并没有加入某一个channel,所以是没有账本数据的。需要发送请求将其加入channel:

curl -s -X POST \
http://localhost:4000/channels/mychannel/peers \
-H "authorization: Bearer $ORG1_TOKEN" \
-H "content-type: application/json" \
-d '{
"peers": ["peer3"]
}'

请求中,$ORG1_TOKEN是通过注册获取的org1的token值,"peer3"是在网络配置文件中设置的新节点的别名。

加入通道成功后,查看节点日志可以发现新节点开始从其他节点同步区块:

docker logs peer2.org1.example.com

五、安装链码

加入channel后,peer3已经可以参与记账,但是不能指定该节点进行查询或交易,这时候需要发起请求安装chaincode:

curl -s -X POST \
http://localhost:$PORT/chaincodes \
-H "authorization: Bearer $ORG1_TOKEN" \
-H "content-type: application/json" \
-d '{
"peers": ["peer3"],
"chaincodeName":"mycc",
"chaincodePath":"github.com/example_cc",
"chaincodeVersion":"v0"
}'

安装成功后指定新节点进行查询或交易操作,会自动生成该节点的chaincode镜像,并启动容器运行chaincode。在已有组织中新加节点的操作到这里就全部完成了!

原文链接:https://zhayujie.com/add-peer.html

最新文章

  1. javascript 实现一个回文数字
  2. 初识onselectstart
  3. WPF 中获取DataGrid 模板列中控件的对像
  4. BurpSuite之SQL Injection
  5. mysql sql 百万级数据库优化方案
  6. JS 打印报表
  7. iOS 压缩与裁剪图片问题
  8. lastcomm搜索并显示以前执行过的命令信息
  9. 解决错误 fatal error C1010: unexpected end of file while looking for precompiled head
  10. Event Sourcing - ENode(二)
  11. [iOS]C语言知识点系列视频
  12. iis .apk .ipa下载设置
  13. HDU 2009 求数列的和
  14. C#调用java方法踩坑记
  15. 跟随我在oracle学习php(8)
  16. git一个分布式版本工具的使用
  17. 十三、java_GUI
  18. CROSSUI桌面工具 分布加载模块(Distributed UI Module) 与 主模块Module 之间数据传输!
  19. Html Email 邮件html页编写指南
  20. css实战第三天小结

热门文章

  1. Linux系统管理第三次作业 账号管理 权限及归属管理
  2. 【深入AQS原理】我画了35张图就是为了让你深入 AQS
  3. 标准库模块time,datetime
  4. IEEE 754标准--维基百科
  5. 题解 AT4867 【[ABC155D] Pairs】
  6. CF1316C Primitive Primes
  7. js 箭头函数不适用的场景
  8. tp5中提示错误A non well formed numeric value encountered
  9. Python爬虫丨大众点评数据爬虫教程(1)
  10. 在培训机构花了好几万学Java,当了程序员还常被鄙视,这是招谁惹谁了?