超级账本fabric v2.2.1区块链在鲲鹏服务器上的部署 - 加强版
背景
网上介绍超级账本Hyperledge Fabric 1.X和2.X版本的文章很多,但是在鲲鹏平台能够使用的、而且能部署成功的案例少之又少。本文实现了在鲲鹏平台部署超级账本Fabric v2.2.1。由于fabric官方不支持ARM内核的二进制文件以及Docker镜像,因此需要我们自己修改源代码重新编译。本实验主要通过修改相关项目中Makefile和Dockerfile与鲲鹏平台相关内容,使得Fabric可以在鲲鹏平台上编译部署。
鲲鹏实验环境
鲲鹏计算ECS,鲲鹏通用计算增强型,kc1.2xlarge.2 8vCPUs | 16GB,Ubuntu 18.04 server 64bit with ARM
操作步骤
系统换源
cp /etc/apt/sources.list /etc/apt/sources.list_backup
vim /etc/apt/sources.list
添加以下代码:
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.huaweicloud.com/ubuntu-ports/ bionic-updates main multiverse restricted universe
apt-get update -y && apt-get upgrade -y
安装Go
wget https://dl.google.com/go/go1.14.4.linux-arm64.tar.gz
tar -C /usr/local -xzvf go1.14.4.linux-arm64.tar.gz
vim /etc/profile
在文件最后添加代码:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin
source /etc/profile
cp /usr/local/go/bin/go /usr/bin/go
go version
go env -w GO111MODULE=on GOPROXY=https://goproxy.cn
go get -u github.com/golang/protobuf/protoc-gen-go
安装Docker和Docker Compose
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get install -y docker-ce docker-ce-cli containerd.io
docker version
apt-get install docker-compose -y
docker-compose –v
安装Node.js
apt-get install nodejs npm -y
npm -v
node –v
安装其他工具
apt-get install libc6-dev libltdl3-dev python-setuptools protobuf-compiler binutils-gold -y
Clone项目源代码
mkdir -p $GOPATH/src/github.com/hyperledger/
cd $GOPATH/src/github.com/hyperledger/
git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/hyperledger00001/fabric.git
git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/hyperledger00001/fabric-baseimage.git
git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/hyperledger00001/fabric-ca.git
若CodeHub仓库失效,请访问https://github.com/hyperledger仓库clone相应项目
修改baseimage基础镜像
cd fabric-baseimage/
git checkout v0.4.21
vim config/baseos/Dockerfile
将第6行
FROM debian:buster-20190910-slim
替换为
FROM arm64v8/debian:buster-20190910-slim
RUN sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list
vim config/baseimage/Dockerfile
将第6行
FROM adoptopenjdk:8u222-b10-jdk-openj9-0.15.1
替换为
FROM adoptopenjdk:8u222-b10-jdk-hotspot-bionic
RUN sed -i 's/ports.ubuntu.com/mirrors.huaweicloud.com/g' /etc/apt/sources.list
vim images/couchdb/Dockerfile
将第5行
FROM debian:stretch-20190910-slim
替换为
FROM arm64v8/debian:stretch-20190910-slim
RUN sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list
第17行后添加
libmozjs185-dev \
将第38和39行链接分别替换
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/gosu-arm64
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/gosu-arm64.asc
将第54和55行链接分别替换
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/tini-arm64
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/tini-arm64.asc
将第111行couchdb链接替换
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/apache-couchdb-2.3.1.tar.gz
在117行后增加
&& chmod +w bin/rebar \
&& mv bin/rebar bin/rebar-orig \
&& cd bin \
&& curl -fSL https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/rebar --output rebar \
&& chmod +x rebar \
&& cd .. \
vim images/kafka/Dockerfile
将第6行替换为
FROM arm64v8/debian:buster-20190910-slim as download
RUN sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list
替换第18行链接为
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/kafka_2.11-1.0.2.tgz
替换第25行为
FROM adoptopenjdk:8u222-b10-jre-hotspot-bionic
RUN sed -i 's/ports.ubuntu.com/mirrors.huaweicloud.com/g' /etc/apt/sources.list
vim images/zookeeper/Dockerfile
替换第6行为
FROM arm64v8/debian:buster-20190910-slim as download
RUN sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list
替换第30行链接为
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/zookeeper-3.4.14.tar.gz
替换第34行为
FROM adoptopenjdk:8u222-b10-jre-hotspot-bionic
RUN sed -i 's/ports.ubuntu.com/mirrors.huaweicloud.com/g' /etc/apt/sources.list
vim scripts/common/setup.sh
在第32行后添加
mkdir -p $GOROOT
替换第34和第75行为
ARCH=`uname -m | sed 's|i686|386|' | sed 's|x86_64|amd64|' | sed 's|aarch64|arm64|'`
修改第36行为
BINTARGETS="x86_64 ppc64le s390x aarch64"
修改第37行为
1.14.4
修改第42行链接为
https://dl.google.com/go/go${GO_VER}.linux-${ARCH}.tar.gz
修改第83行链接为
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/$NODE_PKG
修改第101链接和102行为
https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/%E5%AE%9E%E9%AA%8C%E8%B5%84%E6%BA%90/3.2%20Go%E8%AF%AD%E8%A8%80%E4%BB%A3%E7%A0%81%E7%A7%BB%E6%A4%8D/protobuf-3.1.0.tar.gz
tar xpzf protobuf-3.1.0.tar.gz
修改第115行为
make -j8
Make基础镜像
make -j8
docker images
修改fabric镜像
cd ../fabric
git checkout v2.2.1
vim Makefile
第84行添加linux-arm64
第101行注释最后checks
修改第158和159行为
docker pull hyperledger/fabric-zookeeper:latest
docker pull hyperledger/fabric-kafka:latest
注释第160行
vim images/baseos/Dockerfile
vim images/orderer/Dockerfile
分别修改
FROM alpine:${ALPINE_VER} as base
为
FROM arm64v8/alpine:${ALPINE_VER} as base
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
vim images/tools/Dockerfile
vim images/ccenv/Dockerfile
vim images/orderer/Dockerfile
分别修改
FROM golang:${GO_VER}-alpine${ALPINE_VER} as golang
为
FROM arm64v8/golang:${GO_VER}-alpine${ALPINE_VER} as golang
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
在下一条RUN apk add --no-cache xxxxxx命令musl-dev后添加
binutils \
binutils-gold
在下一行添加
ENV PATH="/usr/bin:${PATH}"
vim images/peer/Dockerfile
替换第8行为
FROM arm64v8/debian:buster-20190910-slim as peer-base
RUN sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list
RUN apt-get install tzdata bash
替换第17-23行为
FROM arm64v8/golang:${GO_VER}-buster as golang
RUN sed -i 's/deb.debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list
RUN apt-get install \
bash \
gcc \
git \
make
ENV PATH="/usr/bin:${PATH}"
编译fabric镜像
make
docker images
测试fabric-samples
cd ..
git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/hyperledger00001/fabric-samples.git
cd fabric-samples/ && git checkout v2.1.1
cp -r ../fabric/build/bin .
mkdir -p config/ && cp -r ../fabric/sampleconfig/* config/
ufw disable
cd test-network/
./network.sh up createChannel -c mychannel -s couchdb
docker ps
安装部署fabcar链码
./network.sh deployCC
cat log.txt
- 点赞
- 收藏
- 关注作者
评论(0)