在阿里云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了,于是只得作罢。

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

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
25天前
|
存储 缓存 数据挖掘
阿里云目前最便宜云服务器介绍:38元、99元、199元性能,选购攻略参考
轻量应用服务器2核2G峰值200M带宽38元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。对于还未使用过阿里云服务器的用户来说,大家也不免有些疑虑,这些云服务器性能究竟如何?它们适用于哪些场景?能否满足自己的使用需求呢?接下来,本文将为您全方位介绍这几款云服务器,以供您了解及选择参考。
|
29天前
|
网络安全 云计算
如何设置阿里云轻量应用服务器镜像?
本文介绍了在阿里云轻量应用服务器上创建与配置镜像的详细步骤。镜像是一种特殊的文件系统映射,可用于快速克隆服务器配置。内容涵盖准备条件、登录控制台、创建实例、生成镜像、下载与设置镜像,以及如何使用镜像启动新实例。适合希望提升服务器部署效率的用户参考。
|
1月前
|
存储 弹性计算 安全
阿里云轻量服务器通用型、CPU优化型、多公网IP型、国际型、容量型不同实例区别与选择参考
阿里云轻量应用服务器实例类型分为通用型、CPU优化型、多公网IP型、国际型、容量型,不同规格族的适用场景和特点不同,收费标准也不一样。本文为大家介绍轻量应用服务器通用型、多公网IP型、容量型有何区别?以及选择参考。
|
10天前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
56 0
|
1月前
|
弹性计算 编解码 大数据
性价比最高提升50%!阿里云企业级云服务器上新
阿里云ECS云服务器推出全新升级的u2系列实例,包括基于Intel的u2i实例与首个基于AMD的u2a实例,提供企业级独享算力,综合性价比最高提升50%。u2i实例已开放公测,适用于中小型数据库、企业网站建设等场景。同时发布基于AMD的第九代旗舰实例g9ae,性能提升65%,适用于大数据、视频转码等密集型业务。
192 0
|
17天前
|
存储 域名解析 弹性计算
阿里云上云流程参考:云服务器+域名+备案+域名解析绑定,全流程图文详解
对于初次通过阿里云完成上云的企业和个人用户来说,很多用户不仅是需要选购云服务器,同时还需要注册域名以及完成备案和域名的解析相关流程,从而实现网站的上线。本文将以上云操作流程为核心,结合阿里云的活动政策与用户系统梳理云服务器选购、域名注册、备案申请及域名绑定四大关键环节,以供用户完成线上业务部署做出参考。
|
24天前
|
存储 弹性计算 固态存储
阿里云云服务器配置攻略
选择云服务器需结合业务需求、访问量、ECS实例规格、存储类型与带宽等因素。个人用户可选轻量服务器,企业应用需更高配置,如通用型或内存型实例。带宽根据流量选择,支持按固定或使用量计费。存储方面,系统盘可选小容量,数据盘按需配置,I/O敏感业务建议SSD或ESSD云盘。
|
30天前
|
域名解析 运维 监控
阿里云轻量服务器的系统镜像和应用镜像的区别
轻量应用服务器是阿里云推出的易用型云服务器,支持一键部署、域名解析、安全管理和运维监控。本文介绍其系统镜像与应用镜像的区别及选择建议,助您根据业务需求和技术能力快速决策,实现高效部署。
|
1月前
|
弹性计算 负载均衡 安全
阿里云轻量应用服务器与ECS区别
阿里云轻量应用服务器与ECS云服务器对比:轻量版适合新手和小型应用,套餐化设计,含大流量,易上手但性能和灵活性有限;ECS为专业版,配置灵活,性能强,适合企业级应用,但操作复杂,生态丰富,按需计费。两者定位不同,适用于不同场景。