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

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

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。
|
14天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程
|
15天前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
80 32
|
15天前
|
缓存 监控 测试技术
服务器压力测试
【10月更文挑战第11天】服务器压力测试
67 31
|
3天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
17 3
|
8天前
|
存储 弹性计算 编解码
通过阿里云的活动租赁云服务器时如何选择实例规格?选择指南参考
新手用户通过阿里云的活动租赁云服务器的时候实例规格应该怎么选?目前在阿里云的活动中,可选的云服务器类型除了轻量应用服务器之外,云服务器的主要实例规格有经济型e、通用算力型u1和计算型c7与c8y、通用型g7与g8y、内存型r7与r8y等实例,但是对于新手来说,由于是初次购买,实例规格往往不知道怎么选择了。本文为大家展示阿里云目前活动中各云服务器实例规格性能、适用场景以及选择指南参考。
|
12天前
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。
|
15天前
|
域名解析 网络协议 数据安全/隐私保护
阿里云轻量应用服务器搭建WordPress个人博客教程
阿里云轻量应用服务器搭建WordPress个人博客教程
|
19天前
|
存储 机器学习/深度学习 应用服务中间件
阿里云倚天云服务器实例:计算型c8y、通用型g8y、内存型r8y实例介绍
阿里云倚天云服务器是基于阿里云自研的倚天710 ARM架构CPU打造的高性能计算产品系列,它依托先进的第四代神龙架构,旨在为用户提供稳定可预期的超高效能体验。倚天云服务器在存储、网络性能及计算稳定性方面实现了显著提升,主要得益于其芯片级的快速路径加速技术。本文将深度解析阿里云倚天云服务器的计算型c8y、通用型g8y、内存型r8y实例,探讨其优势及适用场景,以供选择参考。
|
21天前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
33 4