Hyperledger Fabric BaaS设计方案
1.基于Hyperledger Cello
Cello的定位是为Fabric提供一个BaaS平台,使用Web UI方便的管理区块链网络,节点和链码。
理想丰满,希望兼容K8s,swarm等多容器,提供了安装网络,简单监控,安装链码,调用等基本功能,可惜bugs一堆,又得兼顾Fabric快速迭代的版本。
还有一点,以docker为例,实际Work Node使用remote docker访问模式,需要在Master的管理平台手工输入所有的worker node ip和端口,有些维护成本,相当于是master主动连接worker Node进行管理,实际运维场景下的网络和存储的扩展,隔离和兼容等很多细节可能还要考虑和解决。
只是说这个项目暂时成熟度还不高,不过一旦成型,对于很多异构的容器,物理机等环境可能会是个不错的选择。
2.基于Kubernetes管理Fabric
Kubernetes天生便于管理容器,良好的兼容docker,结合Kubernetes API也很方便和别的运维系统打通整合。
(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.
- 原文作者:Zealot
- 原文链接:https://www.51discuss.com/posts/fabric-baas/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。