深度学习
从前面的讲解中可以看到,区块链服务平台能够有效加速对区块链技术的应用,解决企业和开发者进行手动运营管理的负担。但是这些方案都是商业用途,并且只能在线使用。
超级账本的Cello项目为本地搭建区块链服务管理平台提供了开源的解决方案,可以实现在多种类型的物理资源上实现区块链网络的生命周期管理。
正如Cello的名字所蕴意,它就像一把精巧的大提琴,以区块链为琴弦,可以奏出更加动人的乐章。
14.4.1 基本架构和特性
Cello项目由笔者领导的IBM技术团队于2017年1月贡献到超级账本社区,主要基于Python和 Javascript语言编写。该项目的定位为区块链管理平台,支持部署、运行时管理和数据分析等功能,可以实现一套完整的BaaS系统的快速搭建。其基 本架构如图14-10所示。
图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)服务器或虚拟机。
图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所示。
图14-12 Cello Dashboard
表14-1 Dashboard各页面的功能
1.Hosts页面
在Hosts页面,管理员可以管理所有资源池中已存在的主机,或添加新主机。表格中会显示主机的类型、状态、正在运行的区块链数量、区块链数量上限等。所有设定为non-schedulable(不会自动分配给用户)的主机会用灰色背景标识,如图14-13所示。
图14-13 Hosts页面
点击一个主机的Action下拉菜单,有如下选项可供操作该主机:
·Fillup:将主机运行的区块链数添加至上限;
·Clean:清理主机中所有未被用户占用的链;
·Config:更改主机配置,如名称和链数量上限;
·Reset:重置该主机,只有当该主机没有用户占用的链时可以使用;
·Delete:从资源池中删除该主机。
点击Hosts页面的Add Host按钮,可以向资源池中添加主机。需要设定该主机的名称、Daemon URL地址(例如,Worker节点的docker daemon监听地址和端口)、链数量上限、日志配置、是否启动区块链至数量上限、是否可向用户自动分配,如图14-14所示。
图14-14 添加主机
2.Active Chains页面
Active Chains页面会显示所有正在运行的链,包括链的名称、类型、状态、健康状况、规模、所属主机等信息。正在被用户占用的链会用灰色背景标识,如图14-15所示。
图14-15 Active Chains页面
点击一条链的Actions下拉菜单,有如下选项可供操作该链:
·Start:如果这条链处于停止状态,则启动;
·Stop:停止运行中的链;
·Restart:重新启动这条链;
·Delete:删除这条链;
·Release:将占用的链释放,随后会被删除。
点击Active Chains页面的Add Chain按钮,可以向资源池中添加更多链(如果还有未被占满的主机),如图14-16所示。
图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(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区