Fabric 2.0,不使用脚本的情况下启动test-network

之前使用过脚本的方式启动了fabric的测试网络,但是这个脚本封装的实在太好了,一行命令之后啥都看不出来,对于我这样的初学者来说感觉帮助不是特别大,所以我决定把这个脚本串行化的分析一遍,来真正看出整个网络的启动过程。

本文假设当前所在目录为test-network,使用fabric版本为2.3.0,并且和network.sh脚本默认情况下一样不使用预先定义的CA证书。

1.创建加密证书材料

创建org1、org2和org3所需的ca证书,这里会用到organizations/cryptogen下的yaml文件,以crypto-config-org1.yml为例:

# 定义组织管理的所有peer节点
PeerOrgs:
  # 节点名称
  - Name: Org1
    # 节点域名
    Domain: org1.example.com
    # 是否使用NodeOUs(更细粒度的MSP,可以理解为一个公司的不同部门)
    EnableNodeOUs: true
    # 这里省略了一段Spec配置,这些配置用于明确的指明每个peer节点的主机名等信息,也可以使用Template模板配置去自动给主机命名
	# 利用模板方式配置产生多少个peer节点,并按照某种规则进行命名
    Template:
      # 要产生的peer节点的数量
      Count: 1
      # 每个peer的地址
      SANS:
        - localhost
      # 起始序号,默认是0,也就是说对于节点的程序化命名中,第一个节点会是peer{start}
      # Start: 5
      # 主机名的默认规则,前缀加序号,前缀应该是Org1了。
      # Hostname: {
  {.Prefix}}{
  {.Index}} # default
	# 除了管理员之外的用户数量
    Users:
      Count: 1

然后利用如下的三条命令创建组织所需要的证书等

cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output="organizations" 
cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output="organizations" 
cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output="organizations"

执行完成之后在organizations下会生成peerOrganizations和ordererOrganizations两个文件夹,里面分别存储了peer和order生成所需要的材料。

2.CCP文件创建

接下来用ccp-template.yaml和ccp-template.json这两个模板文件来创建CCP文件,这两个文件会分别被保存在organizations/peerOrganizations/org1.example.com和organizations/peerOrganizations/org2.example.com下。

从内容上来看这些文件描述的应该是各peer连接时可能会用到的端口、SSL证书等信息。

执行时只需要调用organizations下的ccp-generate.sh即可完成该步骤。

./organizations/ccp-generate.sh

3.启动网络

这里使用docker-compose的方式来启动用到的四个容器,容器的描述文件为docker/docker-compose-test-net.yaml。通过该文件可以看出网络包含四个服务,一个orderer,两个peer和一个cli,并让他们共同连接到名为test的网络。其中cli应该是用于和org1和org2的peer进行通讯的,它依赖于peer0.org1.example.com和peer0.org2.example.com镜像。使用如下命令启动网络:

export DOCKER_SOCK=/var/run/docker.sock # 不加这句可能会报错,我找不到在哪给这个环境变量赋值的,在docker-compose-test-net.yaml里面DOCKER_SOCK是作为一个环境变量使用的
docker-compose -f docker/docker-compose-test-net.yaml up -d

到这里组成网络的容器都会成功启动了。

4.创建与加入通道

4.1.创建创世块

首先设置FABRIC配置文件路径为configtx,其下有一个configtx.yaml文件,这个文件里定义了组织及其名称以及背书策略,应用调用权限,Order打包参数配置通道背书策略等,configtxgen命令可以通过该文件创建创世块。

export FABRIC_CFG_PATH=${PWD}/configtx	# 设置配置文件路径
export CHANNEL_NAME="mychannel"	# 设定通道名称
configtxgen \
-profile TwoOrgsApplicationGenesis \
-outputBlock ./channel-artifacts/${CHANNEL_NAME}.block \
-channelID $CHANNEL_NAME
# -profile configtx.yaml中的属性,用于生成创世块
# outputBlock 创世块输出位置
# -channelID 设定通道名称

执行之后,会在channel-artifacts出现一个mychannel.block,其中写入了对管道建立相关的背书、组织等,作为创世块。

4.2.创建通道

这里首先会将FABRIC配置文件路径设置为…/

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值