【视频】超级账本HyperLedger: Fabric从1.1.0升级到1.2.0

目录

说明

这是“网易云课堂IT技术快速入门学院”使用的素材。操作、配置文件和代码讲解视频在网易云课堂《HyperLeger Fabric进阶实战课》第三章中。

Fabric1.2增加了这些新特性:私有数据、服务发现、访问控制和插拔式背书验证。详情可见Fabric: What’s new in v1.2,升级过程也比较简单:Upgrading to the Newest Version of Fabric。这里演示怎样将《使用Ansible进行Fabric多节点分布式部署(实战)》中部署1.1.0版本的Fabric升级到Fabric 1.2.0,使用的Ansible脚本托管在github上: Ansible脚本

相关笔记

视频演示:

文字介绍:

问题汇总:

从 Fabric 1.1 升级到 Fabric 1.2

重要: 升级要在部署Fabric 1.1时使用的hyperledger-fabric-ansible目录中进行操作。

备份上一个版本的二进制文件,注意只备份bin和config:

cd output/example.com
mv bin bin-1.1.0
mv config config-1.1.0

注意1:不要改动output/example.com中的crypto-config,这个目录中存放的是证书,在升级时不应当被更新!

下载1.2版本的文件:

wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.2.0/hyperledger-fabric-linux-amd64-1.2.0.tar.gz
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.2.0/hyperledger-fabric-linux-amd64-1.2.0.tar.gz.md5
tar -xvf hyperledger-fabric-linux-amd64-1.2.0.tar.gz

对比config和config-1.1.0中的文件,看一下1.2.0版本的配置文件中引入了哪些新的配置。

将原先的配置文件备份:

mv ../../roles/peer/templates/core.yaml.j2 config-1.1.0/
mv ../../roles/orderer/templates/orderer.yaml.j2 config-1.1.0/
mv ../../roles/cli/templates/core.yaml.j2 config-1.1.0/

然后在config中准备最新的配置模版:

cd config
cp core.yaml core.server.yaml.j2
cp core.yaml core.client.yaml.j2
cp orderer.yaml  orderer.yaml.j2

编辑core.yaml.j2和orderer.yaml.j2之后,将其复制到对应的目录:

cp `pwd`/config/orderer.yaml.j2       ../../roles/orderer/templates/orderer.yaml.j2
cp `pwd`/config/core.server.yaml.j2   ../../roles/peer/templates/core.yaml.j2
cp `pwd`/config/core.client.yaml.j2   ../../roles/cli/templates/core.yaml.j2

注意2:下面是直接关停所有节点,然后用anbile一次替换所有节点上的程序文件,生产环境中注意要逐台升级,并做好备份!

关停节点:

ansible-playbook -i inventories/example.com/hosts -u root ./playbooks/manage_stop.yml

Ansible脚本能确保只更新发生了变化的文件,应当只有程序文件或者更新后的配置文件被更新

更新所有机器上的程序文件:

ansible-playbook -i inventories/example.com/hosts -u root deploy_nodes.yml

更新cli中的程序文件:

ansible-playbook -i inventories/example.com/hosts -u root deploy_cli.yml

验证:

$ cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer0.member1.example.com
$ ./peer.sh node status
status:STARTED

原先的数据和合约依旧可以使用:

$ ./5_query_chaincode.sh
key1value

直接部署Fabric-1.2.0

直接部署过程与分支Fabric-1.1.x的部署过程类似,只是将程序文件换成了1.2.0版本。

Fabric 1.2.0的Peer依赖的镜像,提前在Peer上下载好:

docker pull hyperledger/fabric-ccenv:latest
docker pull hyperledger/fabric-baseos:amd64-0.4.10
docker pull hyperledger/fabric-javaenv:x86_64-1.1.0     #for java
docker pull hyperledger/fabric-baseimage:amd64-0.4.10   #for node.js

目标

在192.168.88.10、192.168.88.11、192.168.88.12上部署一个有两个组织三个Peer组成的联盟。

联盟的二级域名为: example.com。

组织一的域名为: member1.example.com

组织二的域名为: member2.example.com

组织一中部署了一个Orderer和两个Peer,域名和IP分别为:

orderer0.member1.example.com  192.168.88.10
peer0.member1.example.com     192.168.88.10
peer1.member1.example.com     192.168.88.11

组织二没有部署Orderer参与共识,只部署一个Peer:

peer0.member2.example.com     192.168.88.12

共识算法是solo,如果要切换为其它共识算法,例如kafka,需要另外部署kafka,并修改配置文件。

准备

0 将要部署到目标环境中的二进制文件复制到output/example.com/bin/目录中

mkdir -p output/example.com/
cd output/example.com/
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.2.0/hyperledger-fabric-linux-amd64-1.2.0.tar.gz
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.2.0/hyperledger-fabric-linux-amd64-1.2.0.tar.gz.md5
tar -xvf hyperledger-fabric-linux-amd64-1.2.0.tar.gz

1 在inventories/example.com中创建配置文件,以及ansible需要的hosts文件:

configtx.yaml
crypto-config.yaml
hosts

2 准备在运行ansible的机器使用fabric命令。

prepare.sh会使用hyperledger fabric的命令,需要把在本地运行的fabric命令放到output/bin目录中。

例如,我是在mac上执行ansible的,下载的是darwin版本的fabric:

mkdir -p output/bin
cd output/bin
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/darwin-amd64-1.2.0/hyperledger-fabric-darwin-amd64-1.2.0.tar.gz
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/darwin-amd64-1.2.0/hyperledger-fabric-darwin-amd64-1.2.0.tar.gz.md5
tar -xvf hyperledger-fabric-darwin-amd64-1.2.0.tar.gz
cd ../../

3 运行perpare.sh生成证书,以及创世块(可以根据需要修改脚本):

./prepare.sh example

每个部署环境分别在output和inventories中有一个自己的目录,要增加新部署环境除了在output和inventories中准备目录和文件,您还可能需要根据自己的需要在prepare.sh中添加为新的环境生成证书和其它文件的命令。

部署

1 初始化目标机器

export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -k -i inventories/example.com/hosts -u root deploy_prepare.yml

2 检测证书设置是否成功

ansible -i inventories/example.com/hosts -u root  all  -m command -a "pwd"

3 如果域名没有绑定IP,修改每台机器的/etc/hosts,(会替换整个文件):

ansible -i inventories/example.com/hosts -u root  all  -m copy -a "src=./inventories/example.com/etc_hosts dest=/etc/hosts"

4 部署节点

ansible-playbook -i inventories/example.com/hosts -u root deploy_nodes.yml

5 部署客户端

ansible-playbook -i inventories/example.com/hosts -u root deploy_cli.yml

Fabric初始化

1 进入member1的管理员目录,对peer0.member1.example.com进行操作:

cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer0.member1.example.com/

//创建channel,channel只需要创建一次
./0_create_channel.sh

//加入channel
./1_join_channel.sh

//设置锚点Peer:
./2_set_anchor_peer.sh

2 进入member1的管理员目录,对peer1.member1.example.com进行操作:

cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer1.member1.example.com
./1_join_channel.sh

3 进入member2的管理员目录,对peer0.member1.example.com进行操作:

cd /opt/app/fabric/cli/user/member2.example.com/Admin-peer0.member2.example.com

//加入channel
./1_join_channel.sh

//设置锚点Peer:
./2_set_anchor_peer.sh

部署合约

1 进入member1的管理员目录,对peer0.member1.example.com进行操作:

cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer0.member1.example.com/

//先获取合约代码,可能会比较慢,拉取代码比较耗时
go get github.com/lijiaocn/fabric-chaincode-example/demo

//安装合约
./3_install_chaincode.sh

//查看已经安装的合约
./peer.sh chaincode list --installed

//合约实例化,只需要实例化一次
./4_instantiate_chaincode.sh

2 在其它Peer上部署合约

//peer1.member1.example.com
//先获取合约代码,可能会比较慢,拉取代码比较耗时
go get github.com/lijiaocn/fabric-chaincode-example/demo

cd /opt/app/fabric/cli/user/member1.example.com/Admin-peer1.member1.example.com/
./3_install_chaincode.sh

//peer0.member2.example.com
//先获取合约代码,可能会比较慢,拉取代码比较耗时
go get github.com/lijiaocn/fabric-chaincode-example/demo

cd /opt/app/fabric/cli/user/member2.example.com/Admin-peer0.member2.example.com/
./3_install_chaincode.sh

同一个合约,只需要在任意一个Peer上实例化一次。

3 调用合约,写数据

./6_invoke_chaincode.sh

4 调用合约,查数据

./5_query_chaincode.sh

管理操作

1 启动链:

ansible-playbook -i inventories/example.com/hosts -u root playbooks/manage_start.yml

2 停止链:

ansible-playbook -i inventories/example.com/hosts -u root playbooks/manage_stop.yml

3 清空链上所有数据:

ansible-playbook -i inventories/example.com/hosts -u root playbooks/manage_rebuild.yml

4 销毁链:

ansible-playbook -i inventories/example.com/hosts -u root playbooks/manage_destroy.yml

参考

  1. Fabric: What’s new in v1.2
  2. Upgrading to the Newest Version of Fabric
  3. 使用Ansible进行Fabric多节点分布式部署(实战)
  4. introclass/hyperledger-fabric-ansible
  5. hyperledger-fabric-ansible部署脚本
  6. 网易云课堂,IT技术快速入门学院

HyperLedger

  1. hyperledger fabric 1.3.0 多节点手动部署
  2. 【视频】超级账本HyperLedger: Fabric源码走读(一):项目构建与代码结构
  3. 【视频】超级账本HyperLedger: Fabric Go SDK的使用
  4. 【视频】超级账本HyperLedger: Fabric使用kafka进行区块排序(共识)
  5. 超级账本HyperLedger: Fabric 1.2.0使用时遇到的问题
  6. 超级账本HyperLedger: Fabric的Chaincode开发过程中遇到的问题
  7. 【视频】超级账本HyperLedger: 为Fabric的Peer节点配置CouchDB
  8. 【视频】超级账本HyperLedger: Fabric从1.1.0升级到1.2.0
  9. 【视频】超级账本HyperLedger: Fabric源码走读(零):源代码阅读环境准备
  10. 【视频】超级账本HyperLedger: Fabric的Chaincode(智能合约、链码)开发、使用演示
  11. 超级账本HyperLedger: Fabric Node.js SDK使用时遇到的问题
  12. 超级账本HyperLedger: Fabric Golang SDK使用时遇到的问题
  13. 超级账本HyperLedger: FabricCA的级联使用(InterMediateCA)
  14. 【视频】超级账本HyperLedger: 使用Ansible进行Fabric多节点分布式部署(实战)
  15. 超级账本HyperLedger: Fabric掰开揉碎,一文解惑
  16. 超级账本HyperLedger: Fabric Channel配置的读取转换
  17. 【视频】超级账本HyperLedger: Fabric进阶,在已有的Channel中添加新的组织
  18. 超级账本HyperLedger: 超级账本工作组旗下项目介绍
  19. 超级账本HyperLedger: Fabric Chaincode(智能合约、链码)开发方法
  20. 【视频】超级账本HyperLedger: Fabric-CA的使用演示(两个组织一个Orderer三个Peer)
  21. 超级账本HyperLedger: FabricCA的基本概念与用法讲解
  22. 【视频】超级账本HyperLedger: Fabric的全手动、多服务器部署教程
  23. 超级账本HyperLedger: Explorer安装使用
  24. 【视频】超级账本HyperLedger: Fabric nodejs SDK的使用
  25. 超级账本HyperLedger: Fabric部署过程时遇到的问题汇总
  26. 超级账本HyperLedger: Cello部署和使用
  27. 超级账本HyperLedger: Fabric的基本概念与基础用法

视频教程

  1. kubernetes 1.12 从零开始(七): kubernetes开发资源
  2. kubernetes 1.12 从零开始(六): 从代码编译到自动部署
  3. kubernetes 1.12 从零开始(五): 自己动手部署 kubernetes
  4. kubernetes 1.12 从零开始(四): 必须先讲一下基本概念
  5. kubernetes 1.12 从零开始(三): 用 kubeadm 部署多节点集群
  6. kubernetes 1.12 从零开始(二): 用 minikube 部署开发测试环境
  7. kubernetes 1.12 从零开始(一): 部署环境准备
  8. kubernetes 1.12 从零开始(零): 遇到的问题与解决方法
  9. kubernetes 1.12 从零开始(初): 课程介绍与官方文档汇总
  10. 【视频】新型监控告警工具prometheus(普罗米修斯)入门使用(附视频讲解)
  11. 【视频】超级账本HyperLedger: Fabric Go SDK的使用
  12. 【视频】超级账本HyperLedger: Fabric使用kafka进行区块排序(共识)
  13. 【视频】超级账本HyperLedger: 为Fabric的Peer节点配置CouchDB
  14. 【视频】超级账本HyperLedger: Fabric从1.1.0升级到1.2.0
  15. 【视频】超级账本HyperLedger: 使用Ansible进行Fabric多节点分布式部署(实战)
  16. 【视频】超级账本HyperLedger: Fabric进阶,在已有的Channel中添加新的组织
  17. 【视频】超级账本HyperLedger: Fabric-CA的使用演示(两个组织一个Orderer三个Peer)
  18. 【视频】超级账本HyperLedger: Fabric的全手动、多服务器部署教程
  19. 【视频】超级账本HyperLedger: Fabric nodejs SDK的使用
  20. 超级账本HyperLedger: Fabric部署过程时遇到的问题汇总
  21. 【视频】8元小课之自动化运维工具ansible(二): 文档阅读摘要
  22. 【视频】8元小课之自动化运维工具ansible(一): 使用入门

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  李佶澳的博客  系统软件  程序语言  运营经验  关注方向  水库文集  网文收藏  网络课程  发现知识星球  百度搜索 谷歌搜索