上期文章阐述了超级账本 Fabric 1.0多节点部署的方法概述,得到广大读者的关注,笔者们连夜赶工,今天发布连载之二,介绍具体搭建 Fabric 1.0 集群的步骤。

注:部署过程中大量使用了docker和docker compose,建议不熟悉Docker的读者先补充相关知识。

二、操作步骤

1、环境构建与测试

本文中用到的宿主机环境是 Ubuntu 14.04.5 LTS,通过 Docker 容器来运行 Fabric 的节点, 版本为 v1.0 beta。因此,启动 Fabric 网络中的节点需要先安装Docker 、 Docker-compose 和 Go 语言环境,然后在网上拉取相关的 Docker镜像,再通过配置 compose 文件来启动各个节点。

1.1、Docker 与 Docker-compose 安装

当安装完成后,可通过 docker version 命令来查看 docker 的版本信息并确认安装成功。

接下来下载并安装 docker-compose 。安装完毕后可以通过 docker-compose version 来确认安装是否成功。

1.2、Go 1.8.3安装:
1). 通过以下命令下载go1.8.3:
curl -O https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

2). 解压go1.8.3.linux-amd64.tar.gz到/usr/local:
tar -C /usr/local -xzf go1.8.3linux-adm64.tar.gz

3). 在~/.profile中添加GOPATH环境变量,并把go加到PATH环境变量,编辑~/.profile在最后添加两行­:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/opt/gopath

4). 在终端运行source ~/.profile后用go version可查看go的版本,返回如下信息说明安装成功:
go1.8.3 linux/amd64

1.3、下载Fabric源码:

下载Fabric源码是因为要用到源码中提供的例子和工具,工具的编译需要用到Go环境,因此需要把源码目录放到 GOPATH下。通过上面Go的安装配置,GOPATH 设置为 /opt/gopath ,用以下命令创建并且进入到 hyperledger 目录中:
mkdir -p /opt/gopath/github.com/hyperledger/
cd /opt/gopath/github.com/hyperledger

从github上下载Fabric源码:
git clone https://github.com/hyperledger/fabric.git

因为镜像使用的是beta版本,因此需要把 Fabric 切换到 v1.0.0 beta 源码分支,以兼容 fabric/example/e2e 中的配置:
git checkout v1.0.0-beta

1.4、Docker镜像下载

Fabric 集群所需要用到的 Docker 镜像如下:

进入到 fabric/examples/e2e_cli 目录下,运行 ./download-dockerimages.sh 来下载必要镜像。镜像下载完成后,就可以通过 docker save 命令把镜像打包成压缩文件,传送到各个VM。当VM接收到压缩文件后,可以通过 docker load 来解压和导入镜像。如果有私有的容器镜像仓库registry,如 Harbor 等,也可以把镜像推送到私有registry,再从各个机器中拉取。

通过以下命令来保存所有 tag 含有 beta 标识的镜像到名字为 images 的压缩文件中:
docker save (docker images | grep beta | awk {‘print1’} ) -o images

生成 images 文件后,就可以通过scp把它拷贝到还没有镜像的其他节点中,例如,地址为 10.112.122.6 的节点需要安装以上镜像,可以通过以下命令把images 远程拷贝到 10.112.122.6 的home目录下:

scp images root@10.112.122.6:~

然后在 10.112.112.6 这台主机的home目录上运行:
docker load -i images

等待一段时间后, 通过 docker images 命令就能查看到相关镜像的信息。

1.5、运行测试

进入到 fabric/example/e2e_cli 文件夹,文件结构如下:

network_setup.sh 是一键测试脚本,该脚本启动了6个 docker 容器,其中有4个容器运行 peer 节点和1个容器运行 orderer 节点,它们组成一个Fabric集群。另外, 还有一个 cli 容器用于执行创建 channel 、加入 channel 、安装和执行chaincode 等操作。测试用的 chaincode 定义了两个变量,在实例化的时候给这两个变量赋予了初值,通过invoke操作可以使两个变量的值发生变化。

通过以下命令执行测试:
bash network_setup.sh up

接下来会有许多的调试信息,具体可参考 e2e_cli 目录下的 script/script.sh 文件,当终端出现以下信息时说明测试通过,所有部件工作正常:

===All GOOD, End-2-End execution completed ===

至此,环境配置工作完毕,通过 docker ps -a 命令可以查看各容器的状态。 chaincode 会在独立的容器中运行,因此会出现3个以 dev 开头的容器,它们与各自的 peer 对应,记录了 peer 对 chaincode 的操作。

2、创建Fabric多节点集群

2.1 前期准备

我们将重现 Fabric 自带的 e2e_cli 示例中的集群,不同的是要把容器分配到不同的虚拟机上,彼此之间通过网络来进行通信,网络搭建完成后则进行相关的 channel 和 chaincode 操作。

先准备5台虚拟机(VM),所有虚拟机均按照上述环境构建与测试步骤配置,当然也可安装一个虚拟机模板,然后克隆出其他虚拟机。其中4台虚拟机运行 peer 节点,另外一台运行 orderer 节点,为其他的四个节点提供order服务。

2.2 生成证书和config.tx

在任意VM上运行 fabric/examples/e2e_cli 目录下的 generateArtifacts.sh 脚本,可生成两个目录,它们分别为 channel-artifacts/ 和 crypto-config/,两个目录的结构分别如下:

-channel-artifacts
-channel.tx
-genesis.block
-Org1MSPanchors.tx
-Org2MSPanchors.tx

上述目录里的文件用于 orderer 创建 channel , 它们根据 configtx.yaml 的配置生成。

-crypto-config
-ordererOrganizations
-peerOrganizations

上述目录里面有 orderer 和 peer 的证书、私钥和以及用于通信加密的tls证书等文件,它通过 configtx.yaml 配置文件生成。

(未完待续)


文章来自于微信公众号“亨利笔记”,已获得作者转载授权。

作者简介

张海宁(Henry Zhang),现任VMware中国研发中心云原生应用首席架构师, Harbor企业级容器Registry开源项目负责人,Cloud Foundry中国社区最早的技术布道师之一,《区块链技术指南》作者之一。目前着重关注区块链、容器和云计算等领域的研究和开发工作。

陈家豪,广州大学密码学研究生,现为VMware公司区块链项目实习生,熟悉超级账本、以太坊和比特币等区块链项目等开发工作。

更多区块链投稿请发送邮箱:jingqi@csdn.net

更多关于超级账本的信息,以及区块链的技术细节,包括比特币、以太坊、公有链、联盟链、侧链、闪电网络等等,请参考笔者和邹均博士等作者合著的新书《区块链技术指南》,机械工业出版社:

京东购买链接:
http://item.jd.com/12007317.html

超级账本Fabric 1.0多节点集群的部署(2)相关推荐

  1. linux下,redis 3.2.1双节点集群安装部署

    为什么80%的码农都做不了架构师?>>>    一.环境准备 1.JDK环境准备,需卸载掉自带JDK (1)检查服务器是否自带jdk环境 [root@redis1 /]# rpm - ...

  2. Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署

    6.1.平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)--运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名.可以指定单独节 ...

  3. 超级账本Fabric区块链用弹珠游戏Marbles 部署

    Marbles 演示 Marbles GitHub地址 关于 Marbles 这个应用程序的基础网络是 Hyperledger Fabric,后者是一个 Linux Foundation 项目.您可能 ...

  4. reids 5.0.4 cluster集群模式部署实操。

    一.准备工作 5.0.4的redis压缩包,可以自行去官网下载. linux环境 二.解压并且安装 1.新建6个文件夹用于安装redis目录 目录路径为/root/tools/7001 [root@m ...

  5. 用Kubernetes部署超级账本Fabric的区块链即服务(1)

    用Kubernetes部署超级账本Fabric的区块链即服务(1) 2017年08月13日 00:00:00 阅读数:937 题图摄于旧金山市区:云海中的 Twin Peaks 不久前,我们发表了如何 ...

  6. 用Kubernetes部署超级账本Fabric的区块链即服务

    关注微信公众号 区块链大本营,学习更多区块链技术及应用知识. 区块链行业投稿,请邮件联系 jiawd@csdn.net 本文将探讨如何把 Fabric v1.0自动化部署在现今最流行的 Kuberne ...

  7. Kubernetes------二进制双master节点集群部署

    前文环境中完成k8s单master节点集群架构部署,两个node节点都已加入集群中,完成与master节点的通信.本文在前文基础下,再加入一个master节点,同时加入nginx负载均衡+keepal ...

  8. 超级账本Fabric中的权限管理和策略

    权限管理是区块链网络十分重要的功能,负责控制某个身份在某个场景下是否允许采取某个操作(如读写某个资源). 超级账本 Fabric 项目通过策略(Policy)来灵活指定各场景下的操作权限. 策略应用场 ...

  9. 超级账本Fabric的架构与设计

    超级账本Fabric项目自诞生之日起就吸引了全球众多企业的密切关注,已经先后发布了两个大的版本,0.6实验版本(2016年9月)和1.0正式版本(2017年7月). 目前,超级账本Fabric架构上核 ...

最新文章

  1. Python Django 使用cookie实现三天免登录及记住密码功能代码示例
  2. QT的QDateTimeEdit类的使用
  3. android 访问sqlite,android中访问已有的sqlite数据库
  4. java ee 值范围_JAVAEE之内置对象和属性范围
  5. 程序员求职面试丨面试必备之终极指导篇,掌握这些,面试不再困难!
  6. [Ext JS 4] 实战之多选下拉单 (带checkbox)
  7. 官宣,PyTorch 1.0 稳定版本现已推出
  8. 模板题——质数、素数、约数
  9. C#操作XML的完整例子——XmlDocument篇(转载,仅做学习之用)
  10. H3C交换机配件RS232配置线(DB9针转RJ45)
  11. 软件测试实例——总结
  12. 入门必看,51单片机学习三步走
  13. win7无法设置时间更新服务器未响应,win7电脑提示系统时间设置有误请更新系统日期...
  14. BinaryFormatter serialization and deserialization are disabled within this application
  15. 编程珠玑--粗略估算
  16. vue使用高德地图并且绘制多边形
  17. 使用python有趣地解决一道动态币值规划方案
  18. 正则表达式——匹配规则
  19. 抗住千万流量的大型分布式系统架构设计
  20. Oracle 运维篇+RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要

热门文章

  1. 2023网络安全工程师可以考哪些证书?
  2. 为什么互联网大佬中,马化腾挨骂最多?
  3. Cocos2d-x 3.10 sdk 升级至 Cocos2d-x sdk 3.17.1 simulator 编译问题汇总
  4. TortoiseSVN 提交失败 Empty directories is not supported: XXX的处理方法
  5. 【资源搜集】7 款不错的聊天机器人 API 接口搜集
  6. 解读《关于加强小额贷款公司监督管理的通知》
  7. KodExplorer 4.40 发布,权限机制优化
  8. 类拼多多商城系统开发纪实(多终端多商户)
  9. 写给前端的 K8S 上手指南
  10. 论文笔记:《Network Dissection: Quantifying Interpretability of Deep Visual Representations》