配置部署区块链
在完成环境准备工作之后,接下来您可以开始区块链网络的配置和部署。
背景信息
区块链网络是基于 Hyperledger Fabric,由以下几种标准类型节点所组成的一套区块链运行环境。
- Orderer:用于将区块链的交易组合成一个个区块。从可扩展性角度考虑,区块链解决方案采用 Kafka 类型的 Orderer 服务。
- Kafka 和 ZooKeeper: 以集群形式为 Orderer 提供底层服务。
- Peer:用于保存和维护账本、创建运行 chaincode 容器、为交易进行背书等等。从高可用性角度考虑,区块链解决方案为每一个组织(organization)创建
2 个 Peer 节点。 - CouchDB:用于保存 Peer 的状态数据库(State Database)。区块链解决方案为每一个 Peer 创建一个 CouchDB。
- CA:用于为应用提供 PKI 证书服务。区块链解决方案为每一个组织(organization)创建一个 CA 节点。
更多详细介绍可参考Hyperledger Fabric官方文档。
为满足企业级应用的需求,区块链解决方案为主要节点提供了数据持久化存储,使用的是在环境准备环节中所创建的共享文件系统。
区块链网络部署运行于阿里云容器服务 Kubernetes 集群之上。用户可选择在同一个 Kubernetes 集群里部署多套区块链网络(用 namespace 隔离),也可以在每一个
Kubernetes 集群里部署一套区块链网络。
配置参数说明
区块链解决方案为大部分字段均提供了默认值,以降低用户配置的复杂度。如需对区块链进行定制,可参考以下字段说明进行参数设置。
参数项 | 说明 |
---|---|
sharedStorage | NAS文件系统的挂载地址。创建区块链网络必须提供的参数,否则将导致创建失败 |
storageCapacity | Kubernetes中对NAS的Persistent Volume Claim(PVC)的初始大小,NAS支持动态扩容。默认值:1Gi |
dockerImageRegistry | Docker 镜像仓库 URL:区块链解决方案的镜像仓库。请根据 Kubernetes 集群所在区域选择对应的镜像仓库。
|
fabricNetwork | 区块链网络名称(必填项):区块链网络会作为容器服务的一个应用部署,此区块链网络名称即为应用名称。请避免使用与已部署应用相同的名称。此外区块链网络名称也会在共享文件系统中作为保存配置和数据的根目录名称。 |
fabricChannel | 区块链网络通道名称:即 Hyperledger Fabric 的 channel 名称,区块链解决方案将在部署时自动创建指定名称的通道。 |
externalAddress | 外部访问地址(必填项):如用户希望利用部署于容器集群之外的应用程序或管理监控工具访问区块链网络,则需要提供所在 Kubernetes 集群的一个节点的公网地址或者 Kubernetes 集群的负载均衡的公网地址作为外部访问地址。相关配置方法可参考环境准备。 |
ordererDomain | Orderer 域:即 Hyperledger Fabric 中 orderer 的 domain,可根据实际需要指定。 |
ordererNum | Orderer 数量:使用 Kafka 类型(非 Solo 类型)的 orderer 服务。指定希望部署的 orderer 节点数量。如需更改ordererNum,请确保同时修改ordererExternalPortList,以保证节点数量和外部端口数量一致,否则将导致区块链部署失败。 |
peerDomain | Peer域:即 Hyperledger Fabric 中 peer 的 domain,可根据实际需要指定。 |
orgNum | 组织数量:即 Hyperledger Fabric 中 organization 的数量,区块链解决方案为每一个组织创建两个 peer,以保证高可用性以及业务扩展的需求。可根据实际需要指定组织的数量,实际部署的 peer 节点数量=组织数量 x 2。如需更改orgNum组织数量,请确保同时修改peerExternalGrpcPortList、caExternalPortList,以保证节点数量和外部端口数量一致,否则将导致区块链部署失败。 |
ordererExternalPortList | Orderer 外部端口列表:如希望使用集群外部的应用访问 orderer 服务,可指定 orderer 节点所使用的外部端口或者使用默认端口。请注意避免不同区块链网络之间占用相同端口可能导致的区块链部署失败。同时请保证列表中端口的数量要与 ordererNum 数量保持一致,否则也将导致区块链部署失败。 |
caExternalPortList | CA 外部端口列表:如希望使用集群外部的应用访问CA服务,可指定 CA 节点所使用的外部端口或者使用默认端口。请注意避免不同区块链网络之间占用相同端口可能导致的区块链部署失败。同时请保证列表中端口的数量要与 orgNum 数量保持一致,否则也将导致区块链部署失败。 |
peerExternalGrpcPortList | Peer gRPC 外部端口列表:如希望使用集群外部的应用访问 peer 服务(默认基于 gRPC 协议),可指定 peer 节点所使用的外部端口或者使用默认端口。请注意避免不同区块链网络之间占用相同端口可能导致的区块链部署失败。同时请保证列表中端口的数量要与(orgNum x 2)数量保持一致,否则也将导致区块链部署失败。 |
imagePullPolicy | 镜像拉取策略: 此为 Kubernetes 参数,一般用于开发测试目的。 |
hyperledgerFabricVersion | Hyperledger Fabric 版本号: 目前支持 1.4.0,无需设置。 |
thirdPartyImageVersion | Hyperledger Fabric 包含的第三方软件(如CouchDB、Kafka、ZooKeeper等)镜像的版本号: 目前支持 0.4.14(与Hyperledger Fabric 1.4.0 对应),无需设置。 |
explorer.enabled | 是否自动部署Hyperledger Explorer。在部署过程中同时会创建负载均衡实例,并通过80端口提供基于Web UI的区块链浏览器功能。默认为true。 |
logService.enabled | 是否开启对阿里云日志服务的支持。默认为false。关于阿里云日志服务的详情可参考使用日志服务进行Kubernetes日志采集。 |
logService.region | 如开启对阿里云日志服务的支持,则指定日志服务项目所在的地域。请根据实际地域指定。关于阿里云日志服务的详情可参考使用日志服务进行Kubernetes日志采集。 |
logService.userID | 如开启对阿里云日志服务的支持,则指定阿里云主账号的用户ID。关于阿里云日志服务的详情可参考使用日志服务进行Kubernetes日志采集。 |
logService.machineGroup | 如开启对阿里云日志服务的支持,则指定日志服务项目的机器组。关于阿里云日志服务的详情可参考 使用日志服务进行Kubernetes日志采集。 |
logLevel | Hyperledger Fabric不同类型节点(Peer,Orderer,CouchDB)的日志级别。可选值为:CRITICAL | ERROR | WARNING | NOTICE | INFO | DEBUG;默认值:INFO |
使用控制台界面部署区块链
使用 Helm 命令行部署区块链
如需了解容器服务 Kubernetes 集群的 Helm 部署应用的更多功能,请参考利用 Helm 简化应用部署。
至此我们便完成了一套区块链网络的配置和部署。
区块链网络各节点服务的命名规则
对于 Hyperledger Fabric 的标准节点类型,相应的服务命名规则如下:
<区块链网络名称>-<节点类型><序号>
network01-peer1
network01-peer2
network01-orderer1
network01-ca1
需要说明的是,尽管在 Kubernetes 集群内可用 namespace 来区分不同的区块链网络,但上述服务命令规则中仍使用了区块链网络名称作为前缀,主要原因是为了保持与
swarm 集群的区块链解决方案一致。
此服务名称与区块链证书、密钥中的节点名称保持一致。对于部署于同一 Kubernetes 集群内的区块链应用程序或 CLI,均可使用此类服务名称(加上服务端口)直接访问,无需使用外部访问地址。
问题诊断
针对区块链的配置、部署、访问等过程中可能发生的各类问题或错误,我们在这里将介绍一些常用的问题诊断思路、方法和工具。
首先,建议检查环境准备 文档中所要求的各项准备工作是否均已正确完成。
其次,善用 Kubernetes 相关命令进行部署事件和输出日志等信息的查看,例如:kubectl describe pod,kubectl logs,kubectl get pod -o yaml 等。
此外,为辅助故障诊断和问题排查,区块链解决方案在区块链网络中一同部署了自定义的 fabric-utils 容器,里面集成了常用的基础工具,如 telnet、ping、nslookup、curl
等。用户可在 master 节点上,通过以下 kubectl 命令进入fabric-utils 容器中使用适合的工具进行诊断分析。例如:
kubectl exec -it fabric-utils-pod bash
最后,针对 Hyperledger Fabric 相关的问题或错误,可尝试通过搜索 Hyperledger Fabric 官方文档、StackOverFlow、Bing/Baidu
等查找相关线索或解决方案。
发布者:佚, 佚名,转转请注明出处:https://www.cms2.cn/aliyun/csk/5037.html