《HyperLedger Fabric 实战》—— 十一、升级 Fabric 1.2 —— 0、机器准备、平台二进制文件、docker 镜像

本文详细介绍HyperLedger Fabric 1.2版本的升级过程,包括机器规划、平台二进制文件与docker镜像的准备,以及如何验证这些文件的正确性。适合已熟悉Fabric 1.0及1.1版本的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《HyperLedger Fabric 实战》—— 十一、升级 Fabric 1.2 —— 0、机器准备、平台二进制文件、docker 镜像

1、机器规划

Fabric 1.2 需要 13台机器,由于后面我们还会演练动态增加组织,因此这里准备 14台机器,系统均为 CentOS 7.4。

建议先掌握前面章节 1.0 及 1.1 的演练,本 1.2 升级部分将包含更少的解释,一些重复的地方也只会简单描述,跳跃性较大。

由于每台机器的平台二进制文件、docker镜像 匀相同,可准备好一台机器,再利用服务器的镜像功能,镜像到多台机器。

序号ip用途
1192.168.24.201Zookeeper1
2192.168.24.202Zookeeper2
3192.168.24.203Zookeeper3
4192.168.24.204Kafka1
5192.168.24.205Kafka2
6192.168.24.206Kafka3
7192.168.24.207Kafka4
8192.168.24.208Orderer1
9192.168.24.209Orderer2
10192.168.24.210Orderer3
11192.168.24.211Peer0.Org1
12192.168.24.212Peer1.Org1
13192.168.24.213Peer0.Org2
14192.168.24.214Peer0.Org3

2、镜像、平台二进制文件

可使用项目中 ~/fabric/scripts/bootstrap.sh 脚本一次性下载好 docker 镜像和平台二进文件。

但对于 docker 镜像还好,而平台二进制文件下载会比较慢,因此还可使用下面两份脚本,分别下载 docker 镜像,和打印二进制文件下载地址,之后通过迅雷等工具下载。

1)bootstrap_download_images.sh

#!/bin/bash

export VERSION=1.2.0
export CA_VERSION=$VERSION
export THIRDPARTY_IMAGE_VERSION=0.4.10
export MARCH=$(uname -m)

dockerFabricPull() {
  local FABRIC_TAG=$1
  for IMAGES in peer orderer ccenv tools; do
      echo "==> FABRIC IMAGE: $IMAGES"
      echo
      docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG
      docker tag hyperledger/fabric-$IMAGES:$FABRIC_TAG hyperledger/fabric-$IMAGES
  done
}

dockerThirdPartyImagesPull() {
  local THIRDPARTY_TAG=$1
  for IMAGES in couchdb kafka zookeeper; do
      echo "==> THIRDPARTY DOCKER IMAGE: $IMAGES"
      echo
      docker pull hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG
      docker tag hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG hyperledger/fabric-$IMAGES
  done
}

dockerCaPull() {
      local CA_TAG=$1
      echo "==> FABRIC CA IMAGE"
      echo
      docker pull hyperledger/fabric-ca:$CA_TAG
      docker tag hyperledger/fabric-ca:$CA_TAG hyperledger/fabric-ca
}

samplesInstall() {
  if [ -d first-network ]; then
    echo "===> Checking out v${VERSION} branch of hyperledger/fabric-samples"
    git checkout v${VERSION}
  elif [ -d fabric-samples ]; then
    echo "===> Checking out v${VERSION} branch of hyperledger/fabric-samples"
    cd fabric-samples && git checkout v${VERSION}
  else
    echo "===> Cloning hyperledger/fabric-samples repo and checkout v${VERSION}"
    git clone -b master https://github.com/hyperledger/fabric-samples.git && cd fabric-samples && git checkout v${VERSION}
  fi
}

dockerInstall() {
  which docker >& /dev/null
  NODOCKER=$?
  if [ "${NODOCKER}" == 0 ]; then
	  echo "===> Pulling fabric Images"
	  dockerFabricPull ${FABRIC_TAG}
	  echo "===> Pulling fabric ca Image"
	  dockerCaPull ${CA_TAG}
	  echo "===> Pulling thirdparty docker images"
	  dockerThirdPartyImagesPull ${THIRDPARTY_TAG}
	  echo
	  echo "===> List out hyperledger docker images"
	  docker images | grep hyperledger*
  fi
}

if [ ! -z $1 ]; then
  VERSION=$1;shift
  if [ ! -z $1 ]; then
    CA_VERSION=$1;shift
    if [ ! -z $1 ]; then
      THIRDPARTY_IMAGE_VERSION=$1;shift
    fi
  fi
fi

# prior to 1.2.0 architecture was determined by uname -m
if [[ $VERSION =~ ^1\.[0-1]\.* ]]; then
  export FABRIC_TAG=${MARCH}-${VERSION}
  export CA_TAG=${MARCH}-${CA_VERSION}
  export THIRDPARTY_TAG=${MARCH}-${THIRDPARTY_IMAGE_VERSION}
else
  # starting with 1.2.0, multi-arch images will be default
  : ${CA_TAG:="$CA_VERSION"}
  : ${FABRIC_TAG:="$VERSION"}
  : ${THIRDPARTY_TAG:="$THIRDPARTY_IMAGE_VERSION"}
fi

dockerInstall

执行bootstrap_download_images.sh,以进行镜像下载。

2)bootstrap_echo_binary.sh

#!/bin/bash

export VERSION=1.2.0
export CA_VERSION=$VERSION
export ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')")

binariesInstall() {
  echo https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/${ARCH}-${VERSION}/${BINARY_FILE}
  echo https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca/${ARCH}-${CA_VERSION}/${CA_BINARY_FILE}
}

BINARY_FILE=hyperledger-fabric-${ARCH}-${VERSION}.tar.gz
CA_BINARY_FILE=hyperledger-fabric-ca-${ARCH}-${CA_VERSION}.tar.gz

binariesInstall

下载到的平台二进制文件解压到~/fabric/release/linux-amd64/bin目录:

[root@localhost bin]# pwd
/root/fabric/release/linux-amd64/bin
[root@localhost bin]# ll
总用量 117028
-rwxr-xr-x. 1 root root 16745952 9月  13 08:16 configtxgen
-rwxr-xr-x. 1 root root 17882936 9月  13 08:16 configtxlator
-rwxr-xr-x. 1 root root  8638144 9月  13 08:16 cryptogen
-rwxr-xr-x. 1 root root 17577312 9月  13 08:16 discover
-rwxr-xr-x. 1 root root      827 9月  13 08:17 get-docker-images.sh
-rwxr-xr-x. 1 root root  7138824 9月  13 08:16 idemixgen
-rwxr-xr-x. 1 root root 22020128 9月  13 08:17 orderer
-rwxr-xr-x. 1 root root 29816920 9月  13 08:17 peer
[root@localhost bin]#

添加可执行权限:

chmod 755 ~/fabric/release/linux-amd64/bin/*

3、镜像、二进制文件验证

执行一次 ~/fabric/examples/e2e_cli/network_setup.sh 文件,以验证我们准备的文件是否正确:

./network_setup.sh up
Creating network "aberic_default" with the default driver
Creating zookeeper2             ... done
Creating zookeeper1             ... done
Creating couchdb1               ... done
Creating ca_peerOrg1 ... done
Creating couchdb0    ... done
Creating couchdb2               ... done
Creating couchdb3               ... done
Creating zookeeper0             ... done
Creating ca_peerOrg2            ... done
Creating peer0.org1.example.com ... done
Creating peer1.org1.example.com ... done
Creating peer0.org2.example.com ... done
Creating peer1.org2.example.com ... done
Creating kafka3                 ... done
Creating kafka0                 ... done
Creating kafka1                 ... done
Creating kafka2                 ... done
Creating orderer.example.com    ... done
Creating cli                    ... done

能顺利启动以上容器,说明各项文件没有问题。

下一篇,我们会编写一些基础配置文件,和生成创世区块等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值