- 新增
expect
,免去手动输入密码的烦恼;
- 脚本自动分发到各个服务器
- orderer增加kafka集群
- 账本存储使用couchdb
- 支持动态新增组织
我们假定您已经配置好了go、docker环境,并设置了相关环境变量。
如果没有,请参考:>> 环境搭建
请先使用如下命令为脚本增加执行权限:
root@vm10-249-0-4:~/fabric-web/fabric-ca# chmod +x *.sh
root@vm10-249-0-4:~/fabric-web/fabric-ca# chmod +x scripts/*.sh
root@vm10-249-0-4:~/fabric-web/fabric-ca# chmod +x scripts/eyfn/*.sh
通过fabric.config
定义网络拓扑结构。
💡 请确认
setup
节点的IP与第一个Peer组织的第一个peer节点一致, 因为setup-bootstrap.sh
脚本会启动run-fabric.sh
脚本,而run-fabric.sh
这个脚本是基于该节点身份执行一系列操作的, 否则的话,在执行实例化链码时报timeout
错误。
./network_builder.sh
在正式开始前,确保您在每个节点都已下载所需的fabric镜像
可执行如下命令下载镜像:
./down-images.sh
为了避免网络访问不同的情况,请确保修改每台服务器的/etc/host
,内容参见build/host.config
。
对于每一个组织都要启动一个rca和ica服务。
确保先启动rca,在启动ica。
一个组织对应一个 root fabric-ca-server
启动指定组织<ORG>
的 root fabric-ca-server 命令如下
./rca-bootstrap.sh <ORG>
脚本会在Root CA初始化时,在/etc/hyperledger/fabric-ca
目录下生成ca-cert.pem
证书,并将其拷贝为/${DATA}/${ORG}-ca-cert.pem
。
一个组织对应一个 intermediate fabric-ca-server
启动指定组织<ORG>
的 intermediate fabric-ca-server 命令如下
./ica-bootstrap.sh <ORG>
脚本会在Intermediate CA初始化时,在/etc/hyperledger/fabric-ca
目录下生成ca-chain.pem
证书,并将其拷贝为/${DATA}/${ORG}-ca-chain.pem
。
其它节点下列操作需要使用rca(
USE_INTERMEDIATE_CA
为false
时)或者ica(USE_INTERMEDIATE_CA
为true`时)根证书
向CA服务端申请组织根证书时使用;
向CA服务端登记CA管理员身份时使用;
之所以登记CA管理员身份,是因为需要使用CA管理员身份去注册Orderer和Peer相关用户实体。
!!! 执行注册新用户实体的客户端必须已经通过登记认证,并且拥有足够的权限来进行注册 !!!
向CA服务端登记 Orderer组织管理员身份和Peer组织管理员身份、Orderer节点身份和Peer节点身份,以及 Peer组织普通用户身份 时使用;
等等。
因此,
USE_INTERMEDIATE_CA
为false
,即未启用中间层CA时,需要将/etc/hyperledger/fabric-ca/ca-cert.pem
拷贝到其它节点作为CA_CHAINFILE
;USE_INTERMEDIATE_CA
为true
,即启用中间层CA时,需要将/etc/hyperledger/fabric-ca/ca-chain.pem
拷贝到其它节点作为CA_CHAINFILE
;
不必担心,这些工作脚本已经帮我们完成了!~ 😆
采用的方法是其它节点通过 ssh远程拷贝ca上的根证书 ,所以我们在fabric.config
中配置了CA的USER_NAME
、PWD
、PATH
,
此外,我们还通过expect
免去了你与脚本交互(scp远程拷贝需要您输入服务器密码)。
同样的,
orderer
节点需要从setup
节点获取创世区块run
节点需要从setup
节点获取应用通道配置交易文件、锚节点配置更新交易文件
这些工作脚本也已经帮我们完成了!~ ✌
setup
容器用于:
- 向fabric-ca-servers注册Orderer和Peer身份
- 构建通道Artifacts(包括:创世区块、应用通道配置交易文件、锚节点配置更新交易文件)
- 启动
run
容器,执行创建应用通道、加入应用通道、更新锚节点、安装链码、实例化链码、查询调用链码等操作
务必在执行完步骤四,再执行此步骤。确保已成功启动所有组织的
rca
、ica
节点。
setup-bootstrap.sh [-h] [-d]
-h|-? 获取此帮助信息
-d 从网络下载二进制文件
-
脚本需要使用fabric的二进制文件
configtxgen
,请将这些二进制文件置于PATH路径下。如果脚本找不到,会基于fabric源码自动编译生成二进制文件, 此时需要保证
$HOME/gopath/src/github.com/hyperledger/fabric
源码存在,且版本一致。当然你也可以通过指定
-d
选项从网络下载该二进制文件,这可能会很慢,取决于你的网速。 -
脚本需要使用fabric的二进制文件fabric-ca-client
,请将该二进制文件置于PATH路径下。如果脚本找不到,会基于fabric ca源码自动编译生成二进制文件, 此时需要保证$HOME/gopath/src/github.com/hyperledger/fabric-ca
源码存在,且版本一致。编译fabric-ca
相关代码,需要一些依赖包,可以通过如下命令安装:sudo apt-get install libtool libltdl-dev
脚本会将编译生成的fabric-ca-server
和fabric-ca-client
保存在$GOPATH/bin
目录下。
如果你执行完上述,那么来启动setup
吧!~😍
由于
setup-bootstrap.sh
脚本的一些操作需要较高的权限,请使用root
用户运行。
./setup-bootstrap.sh
zk-kafka-bootstrap.sh <-z|-k> <ID>
-h|-? 获取此帮助信息
-z 启动zookeeper节点
-k 启动kafka节点
<ID> 节点的编号
假设zookeeper与kafka个配置3台。那么启动脚本如下:
./zk-kafka-bootstrap.sh -z 1
./zk-kafka-bootstrap.sh -z 2
./zk-kafka-bootstrap.sh -z 3
./zk-kafka-bootstrap.sh -k 1
./zk-kafka-bootstrap.sh -k 2
./zk-kafka-bootstrap.sh -k 3
orderer-bootstrap.sh [-h] <ORG> <NUM>
-h|-? - 获取此帮助信息
<ORG> - 启动的orderer组织名称
<NUM> - 启动的orderer组织的第几个节点
./orderer-bootstrap.sh <ORG> <NUM>
peer-bootstrap.sh [-h] <ORG> <NUM>
-h|-? - 获取此帮助信息
<ORG> - 启动的peer组织的名称
<NUM> - 启动的peer组织的节点索引
./peer-bootstrap.sh <ORG> <NUM>
- network_builder导致重写的env.sh,导致其不可再次复用;
- 支持通过
fabric.config
配置是否启用中间层CA; - 动态新增组织,启动Peer调用链码验证后,应恢复数据至初始状态,以为后续启动多个节点做准备;