家蛙树

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 · 38天前 
对于Fabric的权限和MSP配置这块,可能大家实际部署会给一堆msp目录绕晕,我们回过头来梳理一下。 1.Peer节点如何控制用户的采访权限?我们以first-network为例, 先看下peer0的启动配置docker-compose-cli.yaml。 引用到base/docker-compose-base.yaml peer0.org1.example.com: container_name: peer0.org1.example.com extends: fi
Fabric在半天前发布1.3版本,参考 https://github.com/hyperledger/fabric/releases 介绍下1.3的新特性,参考 https://hyperledger-fabric.readthedocs.io/en/release-1.3/whatsnew.html 1.MSP新实现方式,使用身份混合器/Identify Mixer 通过使用零知识证明(zero-knowledge proofs), 可实现身份的匿名和不可连接。 开发环境提供了
Zealot · 88天前 
Hyperledger Fabric当前最新版本为1.2, 自行参考官方安装文档 https://hyperledger-fabric.readthedocs.io/en/release-1.2/prereqs.html 以Centos7安装为例, 简单说明注意事项。 1.安装或更新curl yum install curlyum update curl保证尽量新的版本, 后面步骤安装脚本使用curl下载文件 2.docker安装 (1)Docker CE安装参考官
Zealot · 52天前 
1.基于Hyperledger Cello Cello的定位是为Fabric提供一个BaaS平台,使用Web UI方便的管理区块链网络,节点和链码。 理想丰满,希望兼容K8s,swarm等多容器,提供了安装网络,简单监控,安装链码,调用等基本功能,可惜bugs一堆,又得兼顾Fabric快速迭代的版本。还有一点,以docker为例,实际Work Node使用remote docker访问模式,需要在Master的管理平台手工输入所有的worker node ip和端口,有些维护
1.Consistency 一致性 一致性是分布式系统需要解决的基础问题,一致性是对外呈现的一致的状态或结果,一致性为什么很重要,举个扫码支付的例子。 小明到商场想玩夹娃娃机,他爸爸扫码支付了10元,娃娃取币机正常情况下需要弹出10个币,假设取币机出了问题,没接收到支付成功的通知,没弹出币就让人抓狂了。两个系统中订单状态不一致了,支付系统认为是支付成功,娃娃取币机认为订单待支付。 1.1一致性模型 一致性的模型定义,只列出一些常见的,一起学习研究。(1)Strict Consist