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

Fabric进阶(二)—— 在已有组织中增加节点的更多相关文章

  1. Fabric进阶(三)—— 使用SDK动态增加组织

    在fabric网络运行过程中动态追加新的组织是相当复杂的,网上的资料也十分匮乏,大多是基于first-network这样的简单示例,而且是使用启动cli容器的方法来增加组织,几乎没有针对实际应用的解决 ...

  2. 树莓派进阶之路 (027) - 在Linux中增加swap空间

    原贴地址:http://blog.csdn.net/chinalinuxzend/article/details/1759593  在Linux中增加swap空间 在安装Linux的时候,不知道swa ...

  3. Fabric进阶(一)—— 修改组织和通道的名称

    组织(Org)和通道(Channel)的名称是fabric网络比较重要的两个配置参数,在fabric提供的示例中都已经设置好了这两个参数,一般组织名为"Org1"和"Or ...

  4. Dom4j向XML中增加节点与属性——(四)

    先获取到节点,然后在节点山添加Element 添加节点 添加属性 设置开始标签与结束标签的值book.addElement("描述").addAttribute("nam ...

  5. Fabric中的节点类型

    在Fabric中,尽管所有对等节点/peer都是相同的,但它们可以根据网络的配置方式承担多个角色:(①②是主要的节点类型) ①提交节点: 通道中的每个对等节点都是一个提交节点.它们接收生成的交易区块, ...

  6. 【Chrome】如何在C++中增加给JavaScript调用的API

    本文示例说明了如何在Chrome浏览器中增加JavaScript API.为了简化,先假设是在已有的namespace中增加一个新的API,文章的最后将指出如果增加一下全新的namespace所需注意 ...

  7. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  8. mysql进阶(二十七)数据库索引原理

    mysql进阶(二十七)数据库索引原理 前言   本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb.   第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础.    ...

  9. 分布式进阶(二)Ubuntu 14.04下安装Dockr图文教程(一)

    当前,完全硬件虚拟化技术(KVM.Xen.Hyper-V 等)能在一个物理主机上很好地运行多个互相独立的操作系统,但这也带来一些问题:性能不佳,资源浪费,系统反应迟缓等.有时候对用户来说,完全的硬件虚 ...

随机推荐

  1. 学习 .net core 3----蒋金楠 笔记 构建 Asp.net core Web应用

    前言:准备系统的学习一下.net core 所以购买了 蒋金楠的 ASP.NET CORE 3 书籍,为了加深印象 特此笔记,会持续更新到学习完为止 使用  命令行   dotnet  new  co ...

  2. Excel中的clean函数

    纯属note. 之前经常用excel处理数据的时候,对长文本或网站上拉取的值都会用clean函数清除一些我们肉眼看不到的非打印字符. Excel官方介绍:clean 删除文本中的所有非打印字符. 此次 ...

  3. Ubuntu下访问Windows中Postgresql

    因为项目的原因,需要将Ubuntu中的一些信息记录到Windows中的Postgresql数据库中,查看网上信息,最后成功了,特地记录以下,需要以下步骤: (1)在Windows中Postgresql ...

  4. [软件共享]将数据库中的数据导出为SQL脚本

    可以直接将数据库中的数据导出为脚本,并可以自己设置过滤条件.使用方法很简单,不在多说了.下面是软件截图.123 下载:http://files.cnblogs.com/pw/mssql2.rar

  5. TCP链接的三次握手与四次断开

    一直总觉得三次握手和四次断开,之前老师讲的有问题,经过自己再次琢磨,发现是的,老师讲的没毛病,这次也把自己的理解总结一下,让对这个知识模糊的小伙伴再换种思路去理解 首先看一下TCP三次握手发生了哪些: ...

  6. bfs—Catch That Cow—poj3278

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 87152   Accepted: 27344 ...

  7. cookie ,session 和localStorage的区别详解

    2019独角兽企业重金招聘Python工程师标准>>> cookie ,session 和localStorage的区别详解 博客分类: js 当你在浏览网站的时候,WEB 服务器会 ...

  8. Nginx模块开发(4)————使用subrequest访问第三方服务

    该模块可以完成如下的功能,当我们输入http://你的ip/lcw?s_sh000001时,会使用subrequest方式得到新浪服务器上的上证指数,代码如下: //start from the ve ...

  9. bat 命令

    1.强制杀死进程 /F force 强制性/IM image + 进程名 TASKKILL /F /IM python.exe

  10. JavaWeb开发规范

    以下的建议将帮助你更有效地使用本文所描述的 Java 编程标准: ******************************************************* 当你写代码时就应该遵守 ...