巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

Posted 区块链开源技术社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)相关的知识,希望对你有一定的参考价值。

区块链作为颠覆式创新的突破性技术,已在世界各地呈现方兴未艾的发展态势。科技领先的企业正在借助区块链的安全特性与信任机制,在供应链金融、银行保理、跨境支付结算等业务领域,进行着业务模式创新及业务价值链重塑。科技的核心竞争力体现在“快”上,利用平台优势可以加速业务创新效能,提升企业的竞争优势。基于Linux基金会的Hyperledger Cello开源框架,构筑于AWS云端的区块链即服务(BaaS) 平台能够提供功能完善、性能稳定、开箱即用的区块链服务,为业务快速创新提供“区块链+”技术支撑,助力业务部门快速落地区块链应用,融入业务创新生态系统。


(一) Hyperledger Cello介绍

Cello是2017年新加入Hyperledger的一个新区块链项目,并用于部署区块链即服务(BaaS)的工具包,最大限度地减少了创建、管理及终止区块链的时间及工作。

Cello旨在向区块链生态系统部署区块链即服务(BaaS)模式,以便以更有效的方式提供多租户连锁服务,包括物理机、虚拟机、云和Docker环境。Cello 将作为一种服务机制,支持Hyperledger旗下的其他项目,包括Fabric、Sawtooth Lake, Blockchain Explorer以及Iroha。


Cello项目使开发人员能够通过仪表板创建和管理池中的多个区块链,同时使用户能够使用单个请求快速获取区块链上的信息。Cello利用Docker API来管理远程主机中的区块链群集,因此可以轻松部署到按需提供计算资源的云环境中。


(二) Hyperledger Cello架构

在实现区块链环境快速部署的同时,Cello 也提供了不少对区块链平台进行运行时管理的特性,主要组件参考如下:

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

  • 管理区块链的全生命周期,包括创建、配置、使用、健康检查、删除等。

  • 支持多种基础架构作为底层资源池,包括裸机、虚拟机、容器云(Docker、Swarm、Kubernetes)等。

  • 支持多种区块链平台及自定义配置(目前以支持超级账本Fabric 为主)。

  • 支持监控和分析功能,实现对区块链网络和智能合约的运行状况分析。

  • 提供可插拔的框架设计,包括区块链平台、资源调度、监控、驱动代理等都很容易引入第三方实现。

(三) Hyperledger Cello部署拓扑

Cello 采用了典型的主从(Master-Worker)架构,具体参考如下:

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

Master 节点负责管理(例如,创建和删除)Worker 节点中的区块链集群,其通过8080 端口对外提供管理Dashboard,通过8081 端口对外提供应用Dashboard,通过80 端口对外提供RESTful API。

Worker 节点负责提供区块链集群的物理资源,例如基于Docker 主机或Swarm 的方式启动多个集群,作为提供给用户可选的多个区块链网络环境。


(四)Hyperledger Cello环境要求


巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

Cello第三方软件说明,建议选用Amazon Linux,Master与Worker节点都安装最新版本的Docker Engine,另外Master节点还需安装新版本的docker-compose,详细内容请参考User Data(可以直接从后面的链接下载)及后面的操作过程。

1) Cello Master User Data脚本

https://s3.cn-north-1.amazonaws.com.cn/myvmimport/Cello-Master-userdata.sh

#!/bin/bash

#应用更新

sudo yum update -y

#安装Docker

sudo yum install docker sysstat git make gettext ksh -y

#修改Docker启动配置,增加一个国内镜像库站点

sudo cat > /etc/sysconfig/docker <<EOF

DAEMON_MAXFILES=1048576

OPTIONS=”–default-ulimit nofile=4096:8192 –default-ulimit nproc=2048:4096 –ip-forward=true –iptables=true –registry-mirror=https://registry.docker-cn.com”

DAEMON_PIDFILE_TIMEOUT=10

EOF

#启动Docker

sudo service docker start

2) Cello Worker User Data脚本

https://s3.cn-north-1.amazonaws.com.cn/myvmimport/Cello-Worker-userdata.sh

#!/bin/bash

#应用更新

sudo yum update -y

#安装Docker

sudo yum install docker sysstat git make gettext ksh -y

#修改Docker启动配置,增加一个国内镜像库站点

sudo cat > /etc/sysconfig/docker <<EOF

DAEMON_MAXFILES=1048576

OPTIONS=”-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock –api-cors-header='*' –default-ulimit nofile=4096:8192 –default- ulimit nproc=2048:4096 –ip-forward=true –iptables=true –registry-mirror=https://registry.docker-cn.com”

DAEMON_PIDFILE_TIMEOUT=10

EOF

#启动Docker

sudo service docker start

(五) Hyperledger Cello安装过程

本章节将不详细解释AWS EC2的启动过程,有关此过程请参考Cello官方原文。

http://cello.readthedocs.io/en/latest/awsinstall/

1) 启动EC2实例需要注意的地方

a)AMI请选择Amazon Linux,User Data脚本仅适用于此环境;

b)针对Master与Worker节点请采用不同User Data脚本;

2) Master节点EC2实例启动后的任务

#SSH客户端登录到Master节点,执行如下操作

sudo pip install -U docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

git clone http://gerrit.hyperledger.org/r/cello && cd cello

sudo make setup-master

exit

#退出SSH客户端并重新登录到Master节点,并启动Master节点

cd cello

sudo make start

#可以查看Master节点的详细启动日志

sudo make logs

3) Worker节点EC2实例启动后的任务

#SSH客户端登录到每个Worker节点,执行如下操作

git clone http://gerrit.hyperledger.org/r/cello && cd cello

sudo make setup-worker

(六) Hyperledger Cello功能展示

1) 登录管理界面

可以先参考官方原文

http://hyperledger-cello.readthedocs.io/en/latest/dashboard/#dashboard

具体操作如下:

http://Master_Node_IP:8080           用户名:admin密码:pass

默认的用户与密码可以在make的时候修改docker-compose.yml文件。

进去后可以再新建一个管理员与普通用户,并用停用默认用户与密码。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

2) 增加主机

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)


3) 激活Chain

Fillup操作会自动按容量激活每台Docker Host上的Chain,每个Chain会在Worker节点上启动一组Docker容器来支撑其运行。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

共4个Docker Host,每台Chain容量为3,所以能看到12条活动的Chain 

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)


4) 查看Chain信息

当我们点开Name为worker01_0的Chain,可以看到Chain的信息如下:

a) Chain Id与Host Id

b) Hyperledger Explorer的URL

c) 支撑该Chain的所有Containers

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

当我们打开Hyperledger Explorer的URL(需要找到此Docker Host对应的公网IP,安全组入站放行相应的端口,每个Chain都可能不一样)

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

5) 登录普通用户界面

具体操作如下:

http://Master_Node_IP:8081

建议不要使用默认的用户名及密码,使用前面自建的普通用户,点击Apply Now继续

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

按下面的方式提交申请新的Chain 

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)


大约等待20秒,刷新页面显示如下,已经是Running状态。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

点击Smart Contract,我们选择自带的例子fabric-map去Install与Instantiate

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

这是一个设计好的Sample,参数可以任意输入。 

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)


提交后大约30秒左右,屏幕显示如下表示已经成功部署。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)



切换到Chain界面,可以发现已经有2个Block与1个Smart Contract。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

切换到Invoke界面,进行Invoke Call模拟交易测试,会自动生成Hash值。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

切换到Chain界面,可以看到每个Block的Hash值及对应的事务信息。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

当我们打开Hyperledger Explorer的URL,再切换到mychannel就能看到过去Invoke的统计信息。

巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)

6) 释放已部署的应用

切换到Chain界面,点击Release,将释放MyApp01应用及对应用Chain。

(七) 总结及参考资源

综上所述,通过轻巧地一键式部署操作,在数分钟之内便可在AWS云端运行基于Hyperledger Cello框架的区块链即服务(BaaS)平台,为业务及IT部门提供基于Hyperledger Fabric开源技术的区块链服务。业务和科技人员一旦在脑海中闪现出新的“区块链+业务”场景,就可立即上手使用该平台迅速进行场景落地和原型验证,快人一步加速创新产品落地,使“区块链+ ”创新不再限于纸上谈兵。

该平台极大的降低了用户利用区块链技术的时间成本和技术壁垒,助力企业以区块链技术为科技创新突破口,尝试落地区块链应用,以此扩展新的业务模式,找到新的业务发力点,适配市场热点,让科技更好地支撑业务发展;同时有助于企业储备新的专业知识,在专业技术领域,培养创新型人才,融入创新生态系统,借助外力合作共赢。


[官方说明] https://www.hyperledger.org/projects/cello

[项目源码] https://github.com/hyperledger/cello

[部署文档] http://cello.readthedocs.io/en/latest/


1.https://amazonaws-china.com/cn/blogs/china/hyperledger-cello-aws-cloud-blockchain-baas/



喜欢的话点点关注,欢迎一起交流区块链开源技术


以上是关于巧用Hyperledger Cello 开启AWS云端区块链即服务(BaaS)的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS 区块链模版搭建 Hyperledger Fabric

无需第三方软件,巧用系统自带功能开启共享WIFI

转换GPS数据Cello-CANiQ

巧用Fiddler开启运营商定制版路由器被阉割的功能,免去刷公版固件的风险

巧用PPT进行录屏

巧用python-mysql-replication寻找pos点