Fabric Raft共识多机部署教程共识多机部署教程
Raft是Hyperledger Fabric 1.4.1中新增的排序服务模块,这个教程将介绍如何部署一个基于Raft排序服务的多机Fabric网络。
相关教程推荐:
Hyperledger Fabric Java开发详解
Hyperledger Fabric Node.JS开发详解
1、用、用Raft排序服务启动排序服务启动byfn示例示例
BYFN是学习Hyperledger Fabric的一个很好的例子:它包含了Fabric网络的所有元素,并且在byfn.sh中完整表现出来。当我们不加任何参数运行这个脚本时,它将启动一个包含2个
机构、4个peer和1个orderer(使用solo排序)的Fabric网络。byfn.sh的参数-o用来指定排序服务的类型:
./byfn.sh up -o
最新的BYFN网络设计中包含了5个orderer的密码学资料。如果使用Solo或Kafka排序服务,将值运行第一个Orderer(参见docker-compose-cli.yaml中的定义)。
当我们指定raft作为排序服务时的一个区别之处在于,使用configtxgen生成创世区块我们需要指定configtx.yaml中的SampleMultiNodeEtcdRaft配置端。其他的操作都保持不变。
最后,我们还需要启动其他4个orderer,这些内容在docker-compose-etcdraft2.yaml中定义。
下面时基于raft排序的BYFN网络启动后的情况,你可以看到有5个orderer在运行:
下面是基于Raft排序服务的BYFN网络的拓扑示意图:
在下面的内容中,我们将不再使用BYFN脚本,而是从零开始来学习如何构建多主机的Raft排序的Fabric网络。
2、、Hyperledger Fabric多机部署的不同方案多机部署的不同方案
由于Hyperledger Fabric的组件以容器形式部署,当这些容器都在本机时会很顺利的工作。但是当这些容器需要运行在不同的主机上时,我们需要找出让它们彼此通信的办法。
虽然Hyperledger Fabric官方没有给出正式的推荐方案,目前大致有三种方案:
使用静态使用静态IP:通过指定容器运行的主机IP,容器之间就可以彼此通信。可以在docker-compose文件中使用extra_hosts方法来指定主机IP,当容器运行后,就可以在/etc/hosts文件中
看到这些项。这一方案容易理解,我们也不需要依赖于外部组件,缺点在于所有的东西都是静态配置的,不利于需要动态修改配置的应用场景。
使用使用docker swarm:Docker Swarm是Docker环境中的原生容器编排服务。简而言之,Docker Swarm为跨主机的容器提供了一个叠加网络层,使容器彼此之间能够通信,就像在一
台主机上一样。这一方案的好处在于原始的配置只需要简单修改就可以使用,也不需要在配置中硬编码像IP地址这样的静态信息。缺点在于需要依赖外部组件Docker Swarm。在这个
教程中我们将使用这一方案。
使用使用Kubernetes:k8s使目前最流行的容器编排工具,其机制类似于Docker Swarm。我们已经注意到有一些教程尝试利用k8s来进行fabric的多机部署,但是使用k8s的难度要明显高
于前两种方案。
评论0
最新资源