当前位置:首页 » 区块链精品文章 » 正文

14.4 使用超级账本Cello搭建区块链服务

3443 人参与  2018年09月29日 10:51  分类 : 区块链精品文章  评论

从前面的讲解中可以看到,区块链服务平台能够有效加速对区块链技术的应用,解决企业和开发者进行手动运营管理的负担。但是这些方案都是商业用途,并且只能在线使用。

超级账本的Cello项目为本地搭建区块链服务管理平台提供了开源的解决方案,可以实现在多种类型的物理资源上实现区块链网络的生命周期管理。

正如Cello的名字所蕴意,它就像一把精巧的大提琴,以区块链为琴弦,可以奏出更加动人的乐章。

14.4.1 基本架构和特性

Cello项目由笔者领导的IBM技术团队于2017年1月贡献到超级账本社区,主要基于Python和 Javascript语言编写。该项目的定位为区块链管理平台,支持部署、运行时管理和数据分析等功能,可以实现一套完整的BaaS系统的快速搭建。其基 本架构如图14-10所示。

image.png

图14-10 Cello基本架构

在实现区块链环境快速部署的同时,Cello也提供了不少对区块链平台进行运行时管理的特性,这些特性总结如下:

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

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

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

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

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

下面具体介绍如何以Docker主机为资源池,用Cello快速搭建一个区块链服务平台。

14.4.2 环境准备

Cello采用了典型的主从(Master-Worker)架构。用户可以自行准备一个Master物理节点和若干个 Worker节点。其中,Master节点负责管理(例如,创建和删除)Worker节点中的区块链集群,通过8080端口对外提供网页 Dashboard,通过80端口对外提供RESTful API。Worker节点负责提供区块链集群的物理资源,例如基于Docker主机或Swarm的方式启动多个集群,作为提供给用户可选的多个区块链网络 环境。

图14-11展示了一个典型的Cello部署拓扑。每个节点默认为Linux(如Ubuntu16.04)服务器或虚拟机。

image.png

图14-11 Cello部署拓扑示例

为了支持区块链网络,Worker和Master节点需要配备足够的物理资源。例如,如果希望在一个Worker节点上能够启动至少10个区块链集群,则建议节点配置至少为8 CPU、16G内存、100G硬盘容量。

14.4.3 下载Cello源码

Cello代码的官方仓库在社区的Gerrit上,并实时同步到GitHub仓库中,读者可以从任一仓库中获取代码。例如通过如下命令从官方仓库下载Cello源码:


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


14.4.4 配置Worker节点

1.安装和配置Docker服务

首先安装Docker,推荐使用1.12或者更新的版本。可通过如下命令快速安装Docker:


$ curl -fsSL https://get.docker.com/ | sh


安装成功后,修改Docker服务配置。对于Ubuntu 16.04,更新/lib/systemd/system/docker.service文件如下:


[Service]
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
   --api-cors-header='*' --default-ulimit=nofile=8192:16384 --default-ulimit=
   nproc=8192:16384"
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS


修改后,需要通过如下命令重启Docker服务:


$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service


2.下载Docker镜像

对于超级账本Fabric v1.0集群所需的镜像,可以使用如下命令进行自动下载:


$ cd scripts/worker_node_setup && bash download_images.sh


3.防火墙配置

为了确保Worker上的容器可以正常访问,通过如下命令确保主机开启IP转发:


$ sysctl -w net.ipv4.ip_forward=1


同时检查主机的iptables设置,确保必要的端口被打开(如2375、7050~10000等)。

14.4.5 配置Master节点

1.下载Docker镜像

使用如下命令下载运行服务所必要的Docker镜像。其中,python:3.5镜像是运行Cello核心组件的基础镜 像;mongo:3.2提供了数据库服务;yeasy/nginx:latest提供了Nginx转发功能;mongo-express:0.30镜像是 为了调试数据库,可以选择性安装:


$ docker pull python:3.5 \
   && docker pull mongo:3.2 \
   && docker pull yeasy/nginx:latest \
   && docker pull mongo-express:0.30


2.安装Cello服务

首次运行时,可以通过如下命令对Master节点进行快速配置,包括安装Docker环境、创建本地数据库目录、安装依赖软件包等:


$ make setup


如果安装过程没有提示出现问题,则说明当前环境满足了运行条件。如果出现问题,可通过查看日志信息进行定位。

3.管理Cello服务

可以通过运行如下命令来快速启动Cello相关的组件服务(包括dashboard、restserver、watchdog、mongo、nginx等):


$ make start


类似地,运行make stop或make restart可以停止或重启全部服务。

若希望重新部署某个特定服务(如dashboard),可运行如下命令:


$ make redeploy service=dashboard


运行如下命令可以实时查看所有服务的日志信息:


$ make logs


若希望查看某个特定服务的日志,可运行如下命令进行过滤,如只查看watchdog组件的日志:


$ make log service=watchdog


14.4.6 使用Cello管理区块链

Cello服务启动后,管理员可以通过Cello的Dashboard页面管理区块链。

默认情况下,可通过Master节点的8080端口访问Dashboard。默认的登录用户名和密码为admin:pass。

如图14-12所示,Dashboard有多个页面,各页面的功能如表14-1所示。

image.png

图14-12 Cello Dashboard

表14-1 Dashboard各页面的功能

image.png

1.Hosts页面

在Hosts页面,管理员可以管理所有资源池中已存在的主机,或添加新主机。表格中会显示主机的类型、状态、正在运行的区块链数量、区块链数量上限等。所有设定为non-schedulable(不会自动分配给用户)的主机会用灰色背景标识,如图14-13所示。

image.png

图14-13 Hosts页面

点击一个主机的Action下拉菜单,有如下选项可供操作该主机:

·Fillup:将主机运行的区块链数添加至上限;

·Clean:清理主机中所有未被用户占用的链;

·Config:更改主机配置,如名称和链数量上限;

·Reset:重置该主机,只有当该主机没有用户占用的链时可以使用;

·Delete:从资源池中删除该主机。

点击Hosts页面的Add Host按钮,可以向资源池中添加主机。需要设定该主机的名称、Daemon URL地址(例如,Worker节点的docker daemon监听地址和端口)、链数量上限、日志配置、是否启动区块链至数量上限、是否可向用户自动分配,如图14-14所示。

image.png

图14-14 添加主机

2.Active Chains页面

Active Chains页面会显示所有正在运行的链,包括链的名称、类型、状态、健康状况、规模、所属主机等信息。正在被用户占用的链会用灰色背景标识,如图14-15所示。

image.png

图14-15 Active Chains页面

点击一条链的Actions下拉菜单,有如下选项可供操作该链:

·Start:如果这条链处于停止状态,则启动;

·Stop:停止运行中的链;

·Restart:重新启动这条链;

·Delete:删除这条链;

·Release:将占用的链释放,随后会被删除。

点击Active Chains页面的Add Chain按钮,可以向资源池中添加更多链(如果还有未被占满的主机),如图14-16所示。

image.png

图14-16 添加链

14.4.7 基于Cello进行功能扩展

Cello已经提供了完整的区块链管理功能,并提供了图形界面和API。

用户可以通过向Cello的Master节点(默认为80端口)发送RESTful API来申请、释放区块链,或查看区块链相关信息,如其对外开放的接口,可供用户进行远程交互。RESTful API的说明可在Cello的文档中查阅。

对于区块链服务提供者,可以利用这些API为用户呈现友好的区块链申请和操作界面,在Cello的基础之上构建和实现更多功能。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=885

区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!