家蛙树

Hyperledger Fabric BaaS设计方案

Zealot
区块链
2018-09-28

1.基于Hyperledger Cello
Cello的定位是为Fabric提供一个BaaS平台,使用Web UI方便的管理区块链网络,节点和链码。

t_244990ccbb2d44be84b13d04e11be94c.png

理想丰满,希望兼容K8s,swarm等多容器,提供了安装网络,简单监控,安装链码,调用等基本功能,可惜bugs一堆,又得兼顾Fabric快速迭代的版本。
还有一点,以docker为例,实际Work Node使用remote docker访问模式,需要在Master的管理平台手工输入所有的worker node ip和端口,有些维护成本,相当于是master主动连接worker Node进行管理,实际运维场景下的网络和存储的扩展,隔离和兼容等很多细节可能还要考虑和解决。

只是说这个项目暂时成熟度还不高,不过一旦成型,对于很多异构的容器,物理机等环境可能会是个不错的选择(开发成本高,短期内指望不上)。

2.基于Kubernetes管理Fabric
Kubernetes天生便于管理容器,良好的兼容docker,结合Kubernetes API也很方便和别的运维系统打通整合。

t_15220aa7ced0403386e0cc45d237161a.png

(1)自建区块链(单租户)
Kubernetes可以简单使用Flannel网络(一种overlay覆盖网络,把请求TCP在另一网络虚拟路由中重新封包转发)把Fabric网络连通和隔离,基于NFS实现PV/PVC存储用于peer state DB/ledger保存, orderer,ca等信息持久化。

(2)多租户区块链
多租户需要各自的网络和存储要隔离,简单的可以使用calico虚拟路由直接iptable转发和配置ACL实现不同区块链网络的隔离, 存储基本也是NFS实现的PV/PVC

这里顺带提供个小福利,kubernetes安装很是噩梦, master初始化时需下载gci.io镜像都在google那的,基本都只能从阿里云手工下镜像手工docker pull, 这里提供一个自用的镜像

#!/bin/bash

set -e

# Check version in https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/
# Search "Running kubeadm without an internet connection"
# For running kubeadm without an internet connection you have to pre-pull the required master images for the version of choice:
KUBE_VERSION=v1.11.3
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.2.18
CORE_DNS_VERSION=1.1.3

GCR_URL=k8s.gcr.io
#ALIYUN_URL=registry.cn-shenzhen.aliyuncs.com/cookcodeblog
ALIYUN_URL=registry.cn-shenzhen.aliyuncs.com/zealot

# When test v1.11.0, I found Kubernetes depends on both pause-amd64:3.1 and pause:3.1 

images=(kube-proxy-amd64:${KUBE_VERSION}
kube-scheduler-amd64:${KUBE_VERSION}
kube-controller-manager-amd64:${KUBE_VERSION}
kube-apiserver-amd64:${KUBE_VERSION}
pause-amd64:${KUBE_PAUSE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd-amd64:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})


for imageName in ${images[@]} ; do
  docker pull $ALIYUN_URL/$imageName
  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName
  docker rmi $ALIYUN_URL/$imageName
done

docker images

当然也额外有一些被墙的k8s镜像,有需要也单独私信我构建。
https://github.com/zealzeng/docker-library

要实现这么个BaaS自然要人力物力,做个web ui通过kubernet API管理orderer, peer等,再考虑节点扩容,各种区块链更新维护等。基本开发运维一体,刚学会docker-compose的yaml语法,又得学kubernetes的yaml语法。

还有一个比较麻烦的东西, 官方的连接Fabric的SDK正式release的只有Java和Nodejs, 官方通用的Fabric Rest也不健全, 如果用其它语言采访Fabric Peer也是麻烦。

路漫漫兮上下求索, cu very soon.

t_17f0bdbcac684e0a9d162d7bf3a7f46d.png

点赞 0
0条评论
其他心得
编写过一些链码的人可能会觉得是在操作一个简单的key-value数据库, 就是GetState和PutState去操作键值对,而对复杂些的一对多,多对多等实体关系和数据模型不知怎么设计。我们先从官方的例子入手一起探讨下。 1.简单转账例子 /fabric-samples/chaincode/chaincode_example02/go/chaincode_example02.go 假设链码调用peer chaincode invoke … -c ‘{“Args”:[“invoke”,”a
Zealot · 22天前 
区块链的真实数据依赖于物联网和智能设备,记一次折腾的android无线调试经历。 Android 4.2.2定制版智能硬件, USB口能插鼠标键盘, 但是不能USB调试。供应商两个方案, 要么开壳找到USB OTG排座, USB口自己接线, 但是开壳会导致硬件功能无法使用; 要么手工打包apk安装到硬件慢慢的toast。 摸索出第三条路。 搜索android无线调试, 基本都需要第一次USB调试线, adb tcpip 5555开启android设备端口监听, 之后adb connect ip
武汉珞樱联创Luoying-server和Fabric-REST开源 https://github.com/zealzeng/luoying-server https://github.com/zealzeng/fabric-rest Luoying Server Framework Luoying server是一个轻量级的服务器开发框架,方便开发者快速的定制多种协议的服务器,servlet style的API和简单的容器注入模式让开发者专注于业务实现。 Maven地址
Zealot · 34天前 
Fabric打鸡血了, 1.3正式版发布一个月1.4的RC版出来了,按照惯例在两个月内1.4正式版会发布,我们先预览下新特性。官方文档链接参考 https://hyperledger-fabric.readthedocs.io/en/release-1.4/whatsnew.html 自1.0版本开始, Fabric日渐成熟。1.4版本专注于提高运维和开发的易用性,主要包括两方面。 (1)可维护性和可操作性 1.4大大的改进了日志,服务健康检查和可操作的度量指标, 持续的修复bug和提供系
分享些干货,吸点人气,2018年区块链技术大会的部分PPT放出。建立开源的安全区块链生态系统(PPT下载) http://cbc.dbw.org.cn/documents/%E5%A4%A7%E4%BC%9A%E6%8A%A5%E5%91%8A/%E5%AE%B9%E6%B7%B3%E9%93%AD.pdf企业区块链(PPT下载) http://cbc.dbw.org.cn/documents/%E5%A4%A7%E4%BC%9A%E6%8A%A5%E5%91%8A/%E7%99%BD%E7%