Hyperledger Cello是一种区块链配置和操作系统,可以有效地管理区块链网络。使用cello,每个人都可以轻松地:
1、从头开始快速构建区块链即服务(BaaS)平台。
2、立即提供可自定义的区块链,例如,Hyperledger结构网络v1.0、v1.2。
3、在裸线,虚拟云(例如,虚拟机,vsphere云),容器集群(例如,Docker,Swarm,Kubernetes)之上维护一个运行区块链网络的池。本文使用docker容器。
4、检查系统状态,调整链号,通过仪表板扩展资源
Hyperledger Cello主要分为两大模块,master和worker,遵循典型的Master-Workers架构。
Master:持有Cello服务,通过相应的管理API管理Workers内的区块链网络。通常,主节点提供Web仪表板(端口8080)和RESTful API(端口80)。建议使用Linux(例如,Ubuntu 18.04)作为Master。
Worker:用于保存区块链网络的节点。Cello支持worker node从单个服务器到群集的多种类型。
该master包括几种服务:
1、operator dashboard:为运营商提供Web UI。
2、user dashboard:为用户提供Web UI。
3、engine:为连锁消费者提供RESTful API。
4、watchdog:注意健康检查。
系统要求(无论是master节点还是worker节点系统要求都是一样的)
1、硬件:8c16g100g(8c16g100g是官方给的标准。当前使用的硬件为4核8G,暂时没有出现问题)
2、Linux内核> = 3.0.0
3、Docker引擎:1.10.0+(Docker 18.0+支持是实验性的)
4、docker-compose:1.10.0+
该master可以通过2步即可完成部署:
1、克隆代码
sudo aptitude install git make -y
git clone http://gerrit.hyperledger.org/r/cello
2、运行安装脚本
首次运行需要运行setup.sh,以后就可以执行make setup-master启动
#cd cello/scripts/master_node/
# sh setup.sh
出现以下日志表明安装成功。
All Image downloaded
Checking local mounted database path /opt/cello/mongo...
Local database path /opt/cello/mongo not existed, creating one
Setup done, please logout and login again.
It's safe to run this script repeatedly.
$ SERVER_PUBLIC_IP = xxxx make start //要启动整个服务,请运行(xxxx请替换为master所在IP)
$ make stop //停止
$ make restart //重启
启动服务会启动相关容器
启动成功后默认的数据存储目录就是/opt/cello/mongo
可以访问xxxx:8080处的操作员仪表板和xxxx:8081处的用户仪表板,用户名/密码:admin/pass 默认的。
xxxx:8080处的操作员仪表板如下图(如果无法访问,确认防火墙端口)
xxxx:8081处的用户仪表板如下图(如果无法访问,确认防火墙端口)
至此master安装成功。
1、修改docker启动参数,让docker启动时监听2375端口
在master节点上验证是否可以访问worker node 节点的docker监听的端口:2375端口
docker -H Worker_Node_IP:2375 info
例如:
docker -H 10.39.43.84:2375 info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.13.1
...
2、安装nfs客户端,并挂载master节点的nfs服务器共享目录
yum install -y nfs-utils
systemctl enable rpcbind.service
systemctl start rpcbind.service
mount -t nfs -o vers=4,loud masterIP:/ /opt/cello
ls /opt/cello
fabric-1.0 fabric-1.1 fabric-1.2
如果出现这三个目录说明成功挂载nfs服务器
3、配置worker节点
cd cello/scripts/worker_node/
vim setup_worker_node_docker.sh 需要配置master节点IP
make setup-worker
1、登录xxxx:8080处的操作员仪表板,点击左侧主机管理添加主机。
2、创建新的主机,把master和worker进行绑定。
3、创建新的主机提交后,会在主机管理页面看到刚创建的主机信息,注意状态是否为Active,可以点击编辑对主机信息进行更改。
4、点击左侧链管理,点击添加功能创建链,链名称可以随便写,选择指定主机,选择fabric1.0或者fabric1.2,目前不支持fabric1.1,共识选择SOLO,点击提交即可。此时会在worker节点上挂载fabric环境,创建order和peer节点,默认是一个order、两个org、四个peer和两个ca。
5、在链管理页面中会看到刚创建的链,需要注意只有在状态为running、健康为OK时,才表示fabric环境创建成功。此时在worker服务器上通过docker ps 即可查看运行的容器。
6、通过5操作后,只是创建了fabric环境,peer节点并没有加入通道,可看到使用者为Empyt,需要到xxxx:8081处的用户仪表板添加chain。
7、添加chain时需要注意name和network type必须和在操作员仪表板创建的链一致。点击提交后,peer节点就会添加到mychannel(cello默认通道)通道中。通过测试发现只有org1的两个节点在通道中,这属于cello的bug,尚未解决。
8、通道和节点已经准备好,可以安装和实例化链码。点击左侧SmartContract -->Templates,选择+New SmartContract上传链码,只支持zip压缩包。
9、安装链码。在Templates页面看到刚上传的链码,点击Info显示链码详情,选择Deploy导航页安装实例化链码。
选择版本、chain点击install让输入方法和参数进行实例化,方法选择init,参数根据链码init方法所需参数,点击instantiate即可。
在链码详情页如下图所示即表示实例化成功。
10、调用链码。选择invoke或者query即可测试链码。
11、经过fabric-sdk-java测试生成的fabric网络可用。