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

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

1、机器规划

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

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

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

序号 ip 用途
1 192.168.24.201 Zookeeper1
2 192.168.24.202 Zookeeper2
3 192.168.24.203 Zookeeper3
4 192.168.24.204 Kafka1
5 192.168.24.205 Kafka2
6 192.168.24.206 Kafka3
7 192.168.24.207 Kafka4
8 192.168.24.208 Orderer1
9 192.168.24.209 Orderer2
10 192.168.24.210 Orderer3
11 192.168.24.211 Peer0.Org1
12 192.168.24.212 Peer1.Org1
13 192.168.24.213 Peer0.Org2
14 192.168.24.214 Peer0.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

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

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

猜你喜欢

转载自blog.csdn.net/xuguangyuansh/article/details/83269851
今日推荐