在阿里云ECS上的Hyperledger Fabric 1.1.0 搭建与测试

简介: 从去年底到现在一直在准备今年的竞赛作品,其中一个主力项目是基于Hyperledger Fabric联盟链框架的电子病历相关应用。在完成作品背景调研、需求分析以及设计工作后,目前团队在进行作品实现。所以开始研究在阿里云ECS云服务器上搭建Fabric项目的基础环境。由于Fabric项目是一个非常新、年轻的开源框架,中文资料稀少,英文资料理解困难,因此在云服务器上完成环境搭建并跑通示例非常不容易。特写此文,作为工具查阅。

本人电子科技大学大三软件工程专业在读,经过计算机网络课程老师介绍了解到阿里云“飞天加速计划·高校学生在家实践”,并成功拿到了阿里云ECS服务器的体验机会。

0 服务器环境

一开始选用的是某云服务器,但不知道咋回事,在很多步骤执行过程中总是失败或卡住,查询了非常多的解决办法都没能解决,因此最终换成阿里云ECS服务器,性能及配置作为一个参赛作品服务器绰绰有余。

服务器操作系统:Ubuntu Server 18.04 LTS(参考资料1中的环境是CentOS,本人更熟悉Ubuntu环境)

注意:云服务器一般已开启SSH远程登录功能,若你选择使用虚拟机进行环境搭建,请记得在安装操作系统时勾选SSH

使用SSH远程登录服务器/虚拟机sudo ssh (用户名)@(IP地址)

1 安装基础工具

1.1 更新源列表

sudo apt-get update

1.2 安装git(用于拉取仓库中的源码)

sudo apt install git

1.3 安装cURL(用于发起网络请求)

sudo apt install curl

1.4 安装docker相关依赖

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

1.5 安装make工具

sudo apt-get install make

1.6 安装libltdl-dev

sudo apt-get install libtool libltdl-dev

2 安装docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。

2.1 docker的安装

Docker用于方便、快速布局Fabric所需运行环境,它被打包在「容器」中来安装与卸载。很多教程在这里提到需要安装特定版本的Docker,那经过我无数次的实验,不管是失败还是成功,与Docker版本都没有太大关系。因此,这里直接安装最新版Docker即可:

1、安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

2、写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

3、再次更新源列表

sudo apt-get -y update

4、安装

sudo apt-get -y install docker-ce

5、安装完之后,查看版本

docker --version

出现如下字样则安装成功:

Docker version 18.09.7, build 2d0083d

2.2 设置用户组

设置非root用户也能执行docker,需要将普通用户加入docker组:

sudo usermod -aG docker (用户名)

2.3 添加阿里云Hub镜像(加速镜像pull)

1、在阿里云容器镜像服务中心注册并拿到一个镜像地址

2、修改docker配置

sudo vim /etc/docker/daemon.json

3、添加以下内容并保存

{
  "registry-mirrors": ["阿里云Hub镜像地址"]
}

4、生效配置并重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

3 安装docker-compose

docker-compose是Docker官方的开源项目,使用python编写,实现上调用了Docker服务的API进行容器管理。其官方定义为为「定义和运行多个Docker容器的应用(Defining and running multi-container Docker applications)」

3.1 执行安装

sudo apt install docker-compose

3.2 安装完之后,查看版本

docker-compose --version

出现如下字样则安装成功:

docker-compose version 1.8.0, build unknown

3.3 允许其他用户执行compose相关命令

sudo chmod +x /usr/share/doc/docker-compose

4 安装Go

Hyperledger Fabric许多组件使用Go编写,因此要运行Fabric框架,必须首先安装Go环境。Go的版本不是越新越好,新版本会出现不兼容的情况,Fabric 1.1.x要求Go版本为go1.11.x。

4.1 使用wget下载Go安装包

sudo wget https://dl.google.com/go/go1.11.11.linux-amd64.tar.gz

4.2 解压至指定路径

sudo tar -zxvf go1.11.11.linux-amd64.tar.gz -C /usr/local/

4.3 配置环境变量

1、打开并编辑/etc/profile文件

sudo vim /etc/profile

2、在末尾添加以下内容

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin

3、使配置生效!!

source /etc/profile

4、验证安装成功

go version

出现如下字样则安装成功:

go version go1.11.11 linux/amd64

5 拉取Fabric源码

5.1 建立项目目录

mkdir -p ~/go/src/github.com/hyperledger

5.2 进入项目目录

cd ~/go/src/github.com/hyperledger

5.3 Git下载源代码

git clone https://github.com/hyperledger/fabric.git

注意:若无反应或卡住,尝试以下方法:

1、加sudo

sudo git clone https://github.com/hyperledger/fabric.git

2、将https改为git

git clone git://github.com/hyperledger/fabric.git

3、检查云服务器安全组策略是否开放443端口(https),建议将端口全部开放!

4、如果能下载但龟速,将github.com域名换为国内镜像源github.com.cnpmjs.orggit.sdut.me。(我曾尝试过该方法,可以快速下载源码,但在下一步切换branch时会出错,不推荐)

5.4 切换branch

1、查看项目所有branch

git branch -a

2、将分支切换为v1.1.0(重要!!)

git checkout v1.1.0

6 Pull docker镜像

因为在之前步骤中已经配置了Docker的阿里云镜像地址,此步会很快。如果还出现卡,可能是配置完镜像地址后没有重启Docker服务,请返回相应步骤重新配置。将Fabric v1.1.0版本所需的Docker运行环境镜像pull到本地。

6.1 进入项目目录

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

6.2 下载镜像(注意版本号对应!)

source download-dockerimages.sh -c x86_64-1.1.0 -f x86_64-1.1.0

6.3 查看镜像列表

docker images

出现的结果是,本地镜像中已成功下载了 toolspeerorderercaccenvjavaenvv1.1.0版本镜像并被打上 latest的标签。仔细观察下载镜像过程,你会发现有几个镜像因为「找不到指定版本的镜像」而下载失败。因为这几个镜像没有 v1.1.0版本, 需要手动下载并打标签!这是最容易失败的地方!

6.4 手动补充镜像

docker pull hyperledger/fabric-couchdb:x86_64-0.4.6
docker pull hyperledger/fabric-baseos:x86_64-0.4.6
docker pull hyperledger/fabric-kafka:x86_64-0.4.6
docker pull hyperledger/fabric-zookeeper:x86_64-0.4.6

6.5 打上latest标签

docker tag hyperledger/fabric-couchdb:x86_64-0.4.6 docker.io/hyperledger/fabric-couchdb:latest
docker tag hyperledger/fabric-baseos:x86_64-0.4.6 docker.io/hyperledger/fabric-baseos:latest
docker tag hyperledger/fabric-kafka:x86_64-0.4.6 docker.io/hyperledger/fabric-kafka:latest
docker tag hyperledger/fabric-zookeeper:x86_64-0.4.6 docker.io/hyperledger/fabric-zookeeper:latest

6.6 检查镜像列表

docker images

仔细核对下图镜像列表与版本号,必须保持一致!不一致的将其删除,并手动补充、打标签!

7 启动Fabric网络

7.1 切换到e2e_cli项目

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli

7.2 启动网络

sudo ./network_setup.sh up

7.3 成功!

8 可能出现的问题

按上述步骤精确执行后,若还是启动失败,则参考以下解决方案:

9 后记

其实在部署到阿里云ECS服务器上之前,我在本机虚拟机上已经将1.1.0版本和1.4.0版本部署成功(也经历了N多莫名其妙的报错问题),但是忘记记录部署过程,导致后来在云上部署时,出现了非常多的错误和bug。并且这个框架还不成熟,对运行、依赖环境的版本有很精准的要求,这就导致每一次部署失败后要重装服务器系统,回到最初的纯净环境。大概我看日志记录,重装了30多次系统吧。。。后来弄了两三天,还是配不成功,我又想到能否将本机虚拟机直接迁移到云服务器。但是,阿里云服务器迁移功能只能迁移到ECS高性能服务器,而不能迁移到我的学生专用轻量级服务器上。而我们团队的「财务总监」表示经费不够再买一台ECS了,于是只得作罢。

调整崩了无数次的心态,开始在阿里云服务器上再次从头开始配置环境,于是将成功步骤记录在上文,供无数踩坑者参考!(服务器配成功后的第一件事是啥?当然是保存快照!便于以后配不成功时一键恢复!)

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
6天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
39 9
|
1天前
|
数据采集 自然语言处理 数据库
深入体验阿里云通义灵码:测试与实例展示
阿里云通义灵码是一款强大的代码生成工具,支持自然语言描述需求,快速生成高质量代码。它在测试、代码质量和用户体验方面表现出色,能够高效地生成 Python 和 Java 等语言的代码,助力开发者提升开发效率和代码质量。无论是新手还是资深开发者,都能从中受益匪浅。
|
3天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
7天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
40 2
|
12天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
49 3
|
17天前
|
存储 弹性计算 编解码
通过阿里云的活动租赁云服务器时如何选择实例规格?选择指南参考
新手用户通过阿里云的活动租赁云服务器的时候实例规格应该怎么选?目前在阿里云的活动中,可选的云服务器类型除了轻量应用服务器之外,云服务器的主要实例规格有经济型e、通用算力型u1和计算型c7与c8y、通用型g7与g8y、内存型r7与r8y等实例,但是对于新手来说,由于是初次购买,实例规格往往不知道怎么选择了。本文为大家展示阿里云目前活动中各云服务器实例规格性能、适用场景以及选择指南参考。
|
22天前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。
|
24天前
|
域名解析 网络协议 数据安全/隐私保护
阿里云轻量应用服务器搭建WordPress个人博客教程
阿里云轻量应用服务器搭建WordPress个人博客教程
|
4天前
|
弹性计算
阿里云2核16G云服务器多少钱?亲测ECS内存型r8i租赁价格
阿里云2核16G云服务器,内存型r8i实例1年6折优惠后价格为1901元,月付334.19元,按小时计费0.696221元。更多配置及优惠详情,请访问阿里云ECS页面。
下一篇
无影云桌面