Hyperledger Fabric 1.4 Kafka集群部署教程

作者:区块链教程

时间:2019/12/08 10:36

标签:Docker ComposeDockerYMLHyperledger FabricKafka

Hyperledger Fabric区块链网络搭建已繁琐著称。本教程将介绍如何部署一个分布在4个主机上包含多个排序节点和对等节点的hyperledger fabric区块链集群网络,同时提供源码和配置文件下载。

相关教程推荐:

  • Hyperledger Fabric Java开发详解
  • Hyperledger Fabric Node.js开发详解

1、服务结构

我们要搭建的Hyperledger Fabric网络拓扑结构如下:

 网络包含如下服务:

  • 1个机构:org1.example.com
  • 3个对等节点:peer0.example.com、peer1.example.com、peer2.example.com
  • 1个CA节点:ca.example.com
  • 3个排序节点:order0.example.com、order1.example.com、order2.example.com
  • 3个zookeeper节点:zookeeper0、zookeeper1、zookeeper2
  • 4个kafka节点:kafka0、kafka1、kafka2、kafka3

2、部署服务

2.1 部署ca、orderer和kafka

如上图所示,首先在server1上部署CA节点、排序节点、kafka节点和zookeeper节点,使用的docker-compose文件文件为docker-compose-kafka.yml

# deploy ca, zookeerper, kafka and orderers on server0
docker-compose  -f deployment/docker-compose-kafka.yml up -d

在docker-compose文件中,我们为ca和orderer服务定义了extra_hosts属性,其中包含了所有对等节点的信息。由于ca和orderer可能需要与对等节点通信,因此它们需要了解对等节点的信息。peers部署在不同的主机上,因此我们可以在extra_hosts字段定义peer0、peer1和peer2的主机。

extra_hosts:- "peer0.org1.example.com:172.31.26.5"- "peer1.org1.example.com:172.31.20.177"- "peer2.org1.example.com:172.31.27.143"

2.2 部署peer0和cli0

我们在server2上部署peer0和cli0,其中cli0将接入peer0。使用的docker-compose文件为docker-compose-peer0.yml和docker-compose-cli.yml:

# deploy peer0
docker-compose -f deployment/docker-compose-peer0.yml up -d# deploy cli0
docker-compose -f deployment/docker-compose-cli0.yml up -d

在docker-compose-peer0.yml中,我们定义了如下的extra_hosts字段,其中包含了所有排序节点、peer1和peer2的主机信息。添加其他对等节点信息的主要原因在于,对等节点使用gossip协议来向其他peer广播区块。

extra_hosts:- "orderer0.example.com:172.31.25.198"- "orderer1.example.com:172.31.25.198"- "orderer2.example.com:172.31.25.198"- "ca.example.com:172.31.25.198"- "peer1.org1.example.com:172.31.20.177"- "peer2.org1.example.com:172.31.27.143"

在docker-compose-cli0.yml中包含了排序节点的主机信息,因为cli命令在执行交易时需要与排序节点通信:

extra_hosts:- "orderer0.example.com:172.31.25.198"- "orderer1.example.com:172.31.25.198"- "orderer2.example.com:172.31.25.198"

2.3 部署peer1和cli1

接下来我们在server3上部署peer1和cli1:

# deploy peer1
docker-compose -f deployment/docker-compose-peer1.yml up -d# deploy cli1
docker-compose -f deployment/docker-compose-cli1.yml up -d

在docker-compose-peer1.yml中的extra_hosts中包含了排序节点主机和其他对等节点主机(peer0和peer2)的信息。docker-compose-cli.yml中的extra_hosts字段定义了排序节点的主机信息。

2.4 部署peer2和cli2

最后,我们在server4上部署peer2和cli2:

# deploy peer2
docker-compose -f deployment/docker-compose-peer2.yml up -d# deploy cli2
docker-compose -f deployment/docker-compose-cli2.yml up -d

同样在docker-compose文件中需要指定extra_hosts。

3、配置通道

现在已经完成了服务部署,接下来就需要配置通道了。

3.1 创建通道

通过接入server2上的peer0,执行如下命令创建通道:

# create channel from peer0 on server2
# it connects to orderer0
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" \-e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \peer0.org1.example.com peer channel create -o orderer0.example.com:7050 -c mychannel -f /var/hyperledger/configs/channel.tx

接下来我们将把所有三个对等节点加入通道

3.2 将peer0加入通道

现在接入server2上的peer0,执行如下的命令:

# join peer0 to channel
# execute this command from server1
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" \-e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \peer0.org1.example.com peer channel join -b mychannel.block

上面的命令将在peer0容器内生成mychannel.block。

3.3 将mychannel.block拷贝到peer1和peer2

# copy mychannel.block from peer0 to host(server2)
docker cp peer0.org1.example.com:/mychannel.block .# transfer mychannel.block to server3 and server4 via scp
scp -r mychannel.block ubuntu@172.31.20.177:
scp -r mychannel.block ubuntu@172.31.27.143:# copy mychannel.block to peer1 and peer2
# peer1 is on server3
# peer2 is on server4
docker cp mychannel.block peer1.org1.example.com:/mychannel.block
docker cp mychannel.block peer2.org1.example.com:/mychannel.block# remove mychannel.block from server2, server3 and server4
rm mychannel.block

3.4 将peer1加入通道

现在可以将server3上的peer1加入通道:

# join peer1 to channel
# execute this command from server3 machine
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \peer1.org1.example.com peer channel join -b mychannel.block

3.5 将peer2加入通道

同样,可以将server4上的peer2加入通道:

# join peer2 to channel
# execute this command from server4 machine
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/var/hyperledger/users/Admin@org1.example.com/msp" \peer2.org1.example.com peer channel join -b mychannel.block

4、配置链码

4.1 安装链码

链码在chaincode目录。我们使用cli在每个peer节点上安装链码。

# install on peer0 on server2
# cli container connects to peer0
docker exec -it cli peer chaincode install -n mycc -p github.com/chaincode -v v0# install on peer1 on server3
# cli container connects to peer1
docker exec -it cli peer chaincode install -n mycc -p github.com/chaincode -v v0# install on peer2 on server4
# cli container connects to peer2
docker exec -it cli peer chaincode install -n mycc -p github.com/chaincode -v v0

4.2 实例化链码

现在可以实例化链码了。在通道上只需要进行一次实例化。因此我们用server2上的cli0进行链码实例化操作:

# instantiate chaincode from peer0 on server2
# it connects to orderer0
docker exec -it cli peer chaincode instantiate -o orderer0.example.com:7050 \-C mychannel -n mycc github.com/chaincode -v v0 -c '{"Args": ["a", "100"]}'

5、交易的执行与查询

5.1 执行交易

我们使用server2上的cli0调用链码交易:

# invoke transaction from peer0 on server2
# it connects to orderer0 on server1
docker exec -it cli peer chaincode invoke -o orderer0.example.com:7050 \-n mycc -c '{"Args":["set", "a", "20"]}' -C mychannel

5.2 查询交易

我们使用server4上的cli2查询交易:

# query transaction from peer2 on server4
docker exec -it cli peer chaincode query \-n mycc -c '{"Args":["query","a"]}' -C mychannel

本教程的源代码及配置文件可以在这里下载。

Hyperledger Fabric 1.4 Kafka集群部署教程相关推荐

  1. HyperLedger FabricV2.3 Raft单机集群部署

    目录 云主机配置 依赖环境配置 部署步骤 0.更新yum 1.安装golang 2.安装docker 3. 安装docker-compose 4. 安装git 5. 安装java 6. 防火墙配置 7 ...

  2. zookeeper+kafka集群部署+storm集群

    zookeeper+kafka集群部署+storm集群 一.环境安装前准备: 准备三台机器 操作系统:centos6.8 jdk:jdk-8u111-linux-x64.gz zookeeper:zo ...

  3. Kafka集群部署详细步骤(包含zookeeper安装步骤)

    Kafka集群部署 注意:如果jdk1.8和zookeeper都安装设置过之后可以直接安装kafka跳过其它步骤 kafka基础简介及基本命令 1.环境准备 1.1集群规划 node01  node0 ...

  4. Kafka集群部署搭建完美标准版

    Kafka集群部署并启动 在本文中将从演示如何搭建一个Kafka集群开始,然后简要介绍一下关于Kafka集群的一些基础知识点.但本文仅针对集群做介绍,对于Kafka的基本概念不做过多说明,这里假设读者 ...

  5. kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错

    问题描述:kafka集群部署成功后,创建生产者往指定主题里面发送消息时出错,如下所示: 解决方法:在kafka的server.properties配置文件中需要打开listenners配置行,不要使用 ...

  6. Kafka集群部署与测试

    目录 Kafka集群部署与测试 一.安装Kafka 二.启动kafka服务 Kafka集群部署与测试 一.安装Kafka ①.Alt+P 拷贝安装包 cd /opt/module tar -zxvf ...

  7. kafka集群搭建教程(使用自带的zookeeper)

    kafka集群搭建教程(使用自带的zookeeper) 一.kafka简介 二.kafka名词解释 三.zookeeper与Kafka 四.kafka集群搭建前准备 1.下载 2.检验jdk 3.系统 ...

  8. 杨毅-kafka集群部署

    1. 生成证书配置文件 crypto-config.yaml OrdererOrgs:- Name: OrdererDomain: example.comSpecs:- Hostname: order ...

  9. kafka 集群_单机版kafka集群部署

    前言 分布式消息队列是大型分布式系统不可缺少的中间件,主要解决应用耦合.异步消息.流量削锋等问题.实现高性能.高可用.可伸缩和最终一致性架构. 今天跟大家讲解下如何部署单机Kafka集群,希望大家喜欢 ...

最新文章

  1. centos7 安装Git
  2. innerHTML,innerText
  3. C#中string.Concat方法的使用
  4. geetest php,Laravel 集成 Geetest验证码的方法php实例
  5. 遥感影像处理有高招,“专治”各类花式并发的述求!
  6. RDD的两种操作(Transformation和Action)
  7. 题目:有一分数序列:2 / 1,3 / 2,5 / 3,8 / 5,13 / 8,21 / 13...求出这个数列的前20项之和。
  8. 《Effective C#》读书笔记(4)
  9. pymysql安装_Python 新手入门必学模块之:pymysql
  10. php旧物交易开源代码_仿互站PHP源码 虚拟物品在线交易网站源码 附14套风格
  11. C语言一个数组中随机抽取5个数字
  12. 程序员必须掌握的十大经典算法
  13. android移动应用技术教程课后答案,完整word版,《Android移动应用基础教程》_习题答案...
  14. html转换成chm乱码,【全部解决】用Docbook生成htmlhelp + 【完全解决】生成的chm中标题和左边的索引目录是乱码的问题...
  15. cdd matlab 算法,CDD图像修复
  16. 最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
  17. python矩阵运算函数_Numpy 常用矩阵计算函数
  18. 数据分析Power BI案例:职业教育经营分析看板
  19. css 网站大背景(按比例缩放背景图片)
  20. Object对象Configurable,Enumerable,Writable含义解读

热门文章

  1. Qt中TCP服务端编程
  2. pandas 或者字段值_Pandas 用法总结
  3. 用计算机探索,学生计算机基础的应用探索
  4. java怎么导入文件_怎么将文件导入java
  5. Linux:网络编程
  6. loam_livox
  7. 机器学习之数学基础(一)~maximum likelihood
  8. Pycharm环境调整
  9. 机器学习笔记 soft-DTW(论文笔记 A differentiable loss function for time-series)
  10. pandas 笔记:聚合函数agg