原文地址:超级账本HyperLedger的Fabric项目的手动部署教程
说明
虽然通过Building Your First Network中的docker-compose文件可以直接启动一个all-in-one的fabric。 但这种方式隐藏了太多的细节,只能让人有个模糊的认识,对生产环境中部署方式、多服务器部署,依然不清不楚, 对各组件的配置文件也完全不了解。
通过反复阅读Fabric的文档,以及Building Your First Network中的脚本,经历了诸多磨难之后,总算弄清楚了Fabric的组件间关系与配置项。
看文档感觉吃力或者一通操作后不知所以然的同学,可以使用网易云课堂视频教程:HyperLedger Fabric手动部署教程的视频讲解
- 说明
- 规划
- 编译或下载fabric文件
- 准备证书
- orderer.example.com
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- 开始部署
- 启动前准备
- 启动
- 用户
- 创建channel与peer的设置
- 安装合约(chaincode)
- 合约初始化
- 合约调用
- 更新合约
- 参考
规划
创建一个名为fabric-deploy的目录,用来存放部署过程使用到的文件。
mkdir ~/fabric-deploy
这里将用三台机器部署一个fabric网络,该网络中有两个组织:
org1.example.com
org2.example.com
一个order:
orderer.example.com
org1.example.com有两个peer:
peer0.org1.example.com
peer1.org1.example.com
org2.example.com有一个peer:
peer0.org2.example.com
三台机器的IP,以及部署的组件如下:
192.168.88.10 部署: orderer、peer0@org1
192.168.88.11 部署: peer1@org1
192.168.88.12 部署: peer0@org2
相应域名的IP分别为:
192.168.88.10 orderer.example.com
192.168.88.10 peer0.org1.example.com
192.168.88.11 peer1.org1.example.com
192.168.88.12 peer0.org2.example.com
将这四条记录添加到每台机器的/etc/hosts文件中。
每台机器上还需要安装docker:
yum install -y docker
systemctl start docker
另外fabric的peer会调用docker,需要在所有peer上安装docker,并提前下载镜像:
docker pull hyperledger/fabric-javaenv:x86_64-1.1.0
docker pull hyperledger/fabric-ccenv:x86_64-1.1.0
docker pull hyperledger/fabric-baseos:x86_64-0.4.6
下载的镜像需要与下面步骤中创建的core.yaml中的镜像配对:
...
chaincode:
peerAddress:
id:
path:
name:
builder: $(DOCKER_NS)/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION)
golang:
runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
car:
runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
java:
Dockerfile: |
from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-$(PROJECT_VERSION)
...
创建合约的时候会用到这些镜像,镜像下载可能比较慢,根据自己的情况配置加速器。另外每个peer上都需要下载。
我在”区块链实践分享”中提供的fabric-deploy中下载包中提供了这三个镜像,可以直接使用:
cd fabric-deploy/docker-images
./load.sh
编译或下载fabric文件
编译方法见:hyperledger fabric编译
执行下面的命令可以下载编译好的fabric以及依赖的镜像:
curl -sSL https://goo.gl/6wtTN5 | bash
或者直接到这里下载: