《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
能顺利启动以上容器,说明各项文件没有问题。
下一篇,我们会编写一些基础配置文件,和生成创世区块等。