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条评论
其他心得
Zealot · 271天前 
1.简介 Fabric CA基于开源项目CFSSL开发, 主要为fabric网络提供PKI证书服务,是MSP生成的基础。可能有人会问, 官方不是有cryptogen工具批量生成MSP吗? cryptogen实际是辅助测试工具,默认不同orderer,org都有不同的CA, 如果一个org要追加个peer或user, cryptogen就不管用了。生产环境我们建议使用fabric ca全面管理证书, 如果想简单来而区块链组织,节点和用户基本不会变, cryptogen也没问题。 2.
Zealot · 168天前 
去年得知蚂蚁金服放出SOFA的部分开源项目, RPC部分号称源于阿里内部的HSF, HSF当年可是把dubbo 1.x踢出局的, 只是没想到京东改造dubbo为JSF, 当当改为dubbox。国内蛮多电商公司实施服务化就直接上dubbo 1.x或dubbox。这应该是阿里没想到的, 所以现在dubbo 2.x又回笼为apache的顶级项目, 把dubbox合并还继续完善。 朋友说他们公司花了千万买了SOFA的商业版, 那么值钱的东西今天抽空过了一下开源部分的SOFAStack和dubbo2.x文档
Zealot · 177天前 
Fabric 1.4.1引入Raft排序服务, 运维界比较出名的etcd实现的orderer服务。后生可畏, etcd是中国一个年轻人的作品, 实现了raft协议, 在k8s等容器化, 虚拟化, 集群化有官方应用。etcd也是go语言编写, fabric开窍了, 直接把etcd和orderer整合了, 相比kafka/zookeeper的排序服务,搭建简单多了,也比kafka这些省了很多资源(kafka默认开的堆是2GB..), 所以个人是强烈推荐使用,尽量出来不久,但在1.4LTS维护,
Luoying web framework Luoying web framework contains a bundle of components to accelerate J2EE development Github地址 https://github.com/zealzeng/luoying-web Maven地址 <dependency> <groupId>com.whlylc</groupId> <artifac
Zealot · 185天前 
Hyperledger Fabric v2.0 Alpha引入两大新功能,新的Fabric链码生命周期和FabToken. 新的链码生命周期 2.0支持链码的去中心化的治理,引入新的流程在节点上安装链码,在通道上启动实例。新的链码生命周期允许多个组织对链码的参数协同达成一致,例如链码的背书策略。新的模型的改进点如下: (1) 多个组织必须确认同意链码的参数 1.x版本里,一个组织拥有修改链码参数的能力,例如修改背书策略,通道的其它成员也被同步而更改。新的链码生命周期更灵活一些,它兼容支