Skip to content

TrekkiDefi/fabric-web

Repository files navigation

fabric-web

版本历史

v1.1.1

  • 新增expect,免去手动输入密码的烦恼;

v1.1.2

  • 脚本自动分发到各个服务器
  • orderer增加kafka集群
  • 账本存储使用couchdb

v1.1.3

  • 支持动态新增组织

使用步骤

我们假定您已经配置好了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

四、配置hosts

为了避免网络访问不同的情况,请确保修改每台服务器的/etc/host,内容参见build/host.config

五、启动CA服务

对于每一个组织都要启动一个rca和ica服务。

确保先启动rca,在启动ica

(1). rca(root ca)

一个组织对应一个 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

(2). ica(intermediate ca)

一个组织对应一个 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_CAfalse时)或者ica(USE_INTERMEDIATE_CA为true`时)根证书

  • 向CA服务端申请组织根证书时使用;

  • 向CA服务端登记CA管理员身份时使用;

    之所以登记CA管理员身份,是因为需要使用CA管理员身份去注册Orderer和Peer相关用户实体。

    !!! 执行注册新用户实体的客户端必须已经通过登记认证,并且拥有足够的权限来进行注册 !!!

  • 向CA服务端登记 Orderer组织管理员身份和Peer组织管理员身份Orderer节点身份和Peer节点身份,以及 Peer组织普通用户身份 时使用;

等等。

因此,

  • USE_INTERMEDIATE_CAfalse,即未启用中间层CA时,需要将/etc/hyperledger/fabric-ca/ca-cert.pem拷贝到其它节点作为CA_CHAINFILE
  • USE_INTERMEDIATE_CAtrue,即启用中间层CA时,需要将/etc/hyperledger/fabric-ca/ca-chain.pem拷贝到其它节点作为CA_CHAINFILE;

不必担心,这些工作脚本已经帮我们完成了!~ 😆

采用的方法是其它节点通过 ssh远程拷贝ca上的根证书 ,所以我们在fabric.config中配置了CA的USER_NAMEPWDPATH, 此外,我们还通过expect免去了你与脚本交互(scp远程拷贝需要您输入服务器密码)。

同样的,

  • orderer节点需要从setup节点获取创世区块
  • run节点需要从setup节点获取应用通道配置交易文件、锚节点配置更新交易文件

这些工作脚本也已经帮我们完成了!~ ✌

六、启动setup

setup容器用于:

  • 向fabric-ca-servers注册Orderer和Peer身份
  • 构建通道Artifacts(包括:创世区块、应用通道配置交易文件、锚节点配置更新交易文件)
  • 启动run容器,执行创建应用通道、加入应用通道、更新锚节点、安装链码、实例化链码、查询调用链码等操作

务必在执行完步骤四,再执行此步骤。确保已成功启动所有组织的rcaica节点。

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-serverfabric-ca-client保存在$GOPATH/bin目录下。

如果你执行完上述,那么来启动setup吧!~😍

由于setup-bootstrap.sh脚本的一些操作需要较高的权限,请使用root用户运行。

./setup-bootstrap.sh

七、启动Zookeeper与Kafka集群

zk-kafka-bootstrap.sh <-z|-k> <ID>
    -h|-?       获取此帮助信息
    -z          启动zookeeper节点
    -k          启动kafka节点
    <ID>        节点的编号

假设zookeeper与kafka个配置3台。那么启动脚本如下:

(1). 启动Zookeeper
./zk-kafka-bootstrap.sh -z 1
./zk-kafka-bootstrap.sh -z 2
./zk-kafka-bootstrap.sh -z 3
(2). 启动Kafka
./zk-kafka-bootstrap.sh -k 1
./zk-kafka-bootstrap.sh -k 2
./zk-kafka-bootstrap.sh -k 3

八、启动orderer

orderer-bootstrap.sh [-h] <ORG> <NUM>
    -h|-?  - 获取此帮助信息
    <ORG>   - 启动的orderer组织名称
    <NUM>   - 启动的orderer组织的第几个节点
./orderer-bootstrap.sh <ORG> <NUM>

九、启动peer

peer-bootstrap.sh [-h] <ORG> <NUM>
    -h|-?  - 获取此帮助信息
    <ORG>   - 启动的peer组织的名称
    <NUM>   - 启动的peer组织的节点索引
./peer-bootstrap.sh <ORG> <NUM>

十、动态增加节点

>> 动态增加节点

TODO

  • network_builder导致重写的env.sh,导致其不可再次复用;
  • 支持通过fabric.config配置是否启用中间层CA;
  • 动态新增组织,启动Peer调用链码验证后,应恢复数据至初始状态,以为后续启动多个节点做准备;

About

:octocat:基于fabric ca的自动化分布式部署脚本. Support for fabric v1.1.0

Resources

Stars

Watchers

Forks

Packages

No packages published