超级账本fabric v2.2.1区块链在鲲鹏服务器上的部署 - 加强版

举报
skywalkerwty 发表于 2020/12/31 15:22:55 2020/12/31
【摘要】 本文实现了在鲲鹏平台部署超级账本Fabric。由于fabric官方不支持ARM内核的二进制文件以及Docker镜像,因此需要我们自己修改源代码chongxin编译。本实验主要通过修改相关项目中Makefile和Dockerfile与鲲鹏平台相关内容,使得Fabric可以在鲲鹏平台上编译部署。

背景

网上介绍超级账本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

修改第158159行为

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。