多读书多实践,勤思考善领悟

基于hyperledger cello的区块链即服务(BaaS) 搭建

本文于1678天之前发表,文中内容可能已经过时。

区块链即服务(Blockchain as a Service)是面向企业及开发者的高性能、高可用和高安全的区块链技术平台服务,可以帮助企业和开发人员在云上快速、低成本的创建、部署和管理区块链应用。

Hyperledger Cello 是超级账本项目下面的一个子项目,提供按需部署的功能,可以将区块链部署在各种裸机、虚拟机、容器等环境中。该项目最初由IBM发起,目前得到了Soramitsu, 华为,和Intel的赞助。

一. 介绍

使用cello ,每个人都可以轻松地:

  • 从头开始快速构建区块链即服务(BaaS)平台。
  • 立即供应可定制的区块链,例如Hyperledger架构网络v1.0。
  • 在裸机,虚拟云(例如虚拟机,vsphere云),容器集群(例如Docker,Swarm,Kubernetes)之上维护运行中的区块链网络池。
  • 通过仪表板检查系统状态,调整链号,扩展资源…。

典型的使用场景如下所示:

二. 快速开始

环境准备:

  1. docker 安装指南
  2. docker-compose 安装指南
  3. make cello服务管理的所有脚本都是用Makefile编写的
  4. kubernetes (可选的) 安装指南

如果准备好环境,那么我们就可以开始cello服务。

  • 克隆cello代码
1
2
# git clone https://github.com/hyperledger/cello.git
# cd cello
  • 为cello服务构建基本映像(可选,因为当前dockerhub映像自动构建尚未准备好,将来您可以忽略此步骤。)

注意事项 :

pip技巧(加速下载和安装),可以配置下镜像,加速下载和安装。
某些开发包下载过程中会很慢,会出现timeout的情况,解决办法:
查找cello目录下的,dockerfile、Dockerfile.in文件,修改语句 RUN pip install -r ,添加镜像。
例如:
修改前:RUN pip install -r /requirements.txt
修改后:RUN pip install -i http://mirrors.aliyun.com/pypi/simple/ –trusted-host > mirrors.aliyun.com -r /requirements.txt

1
make docker
  • 启动cello服务,默认部署方法是使用docker-compose,如果您具有kubernetes环境,则可以通过将该部署方法更改为kubernetes DEPLOY_METHOD=k8s make start
1
#make start

服务启动后,如果使用docker-compose方法,则可以看到输出:

1
2
3
4
5
6
7
8
9
10
11
12
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS
NAMES
ddf938ed927e hyperledger/cello-dashboard "bash -c '/config-ng…" 2 days ago Up 2 days 0.0.0.0:8081->80/tcp
cello-dashboard
41ab47784b28 hyperledger/cello-api-engine "/bin/sh -c 'bash /e…" 2 days ago Up 2 days 0.0.0.0:8085->8080/tcp
cello-api-engine
073a5f46276e hyperledger/cello-api-engine "bash -c 'celery -A …" 2 days ago Up 2 days
cello-api-engine-tasks
54d2c615d7d9 postgres:11.1 "docker-entrypoint.s…" 2 days ago Up 2 days 5432/tcp
cello-postgres-server
1e0fc6386891 redis:4.0.13 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp
cello-redis

如果使用kubernetes方法进行部署,则输出为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/api-engine 1/1 1 1 7s
deployment.extensions/api-engine-tasks 1/1 1 1 7s
deployment.extensions/postgres 1/1 1 1 8s
deployment.extensions/redis 1/1 1 1 8s

NAME READY STATUS RESTARTS AGE
pod/api-engine-5844d7d9d4-zqw9k 1/1 Running 0 7s
pod/api-engine-tasks-74484d6f45-jj6p9 1/1 Running 0 7s
pod/postgres-774d5cd5f-p5j5l 1/1 Running 0 8s
pod/redis-6bf574b8c5-p2dnl 1/1 Running 0 7s

NAME HOSTS ADDRESS PORTS AGE
ingress.extensions/ingress-api-engine * 80 7s

如果您通过8081端口访问仪表板,则默认用户名/密码为admin/pass

  • 停止cello服务与开始一样,需要设置DEPLOY_METHOD变量。
1
make stop

三. 主要特点

  • 管理区块链的生命周期,例如自动创建/启动/停止/删除/保持健康。
  • 支持定制(例如大小,共识)区块链请求,当前我们主要支持Hyperledger架构
  • 支持本地Docker主机,群集或Kubernetes作为工作节点。即将提供更多支持。
  • 支持从裸机服务器到虚拟机的异构体系结构,例如X86,POWER和Z。
  • 通过使用其他组件来扩展监视,日志,运行状况和分析功能。