原文标题:华为云区块链的跨云联通能力构建(一)
区块链本质上是一种团队活动,成功源自相互的开放与协作。真实业务驱动的区块链需要多方服务提供商的参与,而且客户拥有对区块链网络的最终选择权。华为不断探索多云区块链网络的互连和互操作,与合作伙伴共同提供区块链云化解决方案和服务。
一. 背景
为了验证华为云BCS区块链服务云上云下融合部署能力、支持跨云部署能力,以及华为云BCS服务与社区原生Fabric网络的融合部署能力,我们做了如下的部署验证,证明了方案的可行性,完成了部署并实测了invoke交易,过程中顺便验证了下Fabric1.2版本新增的discovery功能,以及已部署好的peer节点进行goleverdb数据库切换couchdb数据库操作。故有本文,欢迎各位华为云BCS服务使用者和关注者,以及Fabric爱好者参与交流。
跨云部署
discovery服务
goleverdb数据库切换couchdb
云上云下融合部署(华为云BCS服务与社区原生Fabric网络的融合部署)
二. 跨云部署
1、背景与步骤
A云上已经创建好fabric服务,并且已创建好组织org1.huawei及通道silk-road-chain 按照以下步骤,验证Fabric的从A云到华为云的打通部署
•用A云上Fabric已生成的证书,开源1.2镜像,模拟新peer0加入通道silk-road-chain
•加入通道后,实例化链码并进行invoke操作
•更新anchor peer及discovery
•用新生成的证书,华为1.1镜像,模拟新peer1加入通道silk-road-chain
2、用A云上Fabric已生成的证书,开源1.2镜像,模拟新peer0加入通道silk-road-chain
由于A云上已经创建好了组织及通道,只需要直接验证加入通道即可
• 在华为云上订购一个ECS,并安装docker,然后下载官方1.2peer和cli镜像
docker pull hyperledger/fabric-peer:1.2.0
docker pull hyperledger/fabric-tools:1.2.0
• 修改华为云安全组 由于peer将会运行在7051端口,在ECS对应的安全组里增加7051配置
• 准备core.yaml配置文件 注意由于镜像是1.2版本,故需要用1.2版本的core.yaml来修改,否则会有问题 开源的core.yaml,修改
peer.id jdoe --> peer0.org1.huawei.backbonetestnet.baas.dev.icn.engineering
peer.chaincodeListenAddress # chaincodeListenAddress: 0.0.0.0:7052 --> chaincodeListenAddress: 0.0.0.0:7052
peer.address 0.0.0.0:7051 --> peer0.org1.huawei.backbonetestnet.baas.dev.icn.engineering:7051
peer.gossip.bootstrap 127.0.0.1:7051 --> 0.0.0.0:7051
peer.tls.enabled false --> true
peer.tls.clientAuthRequired false --> yes
peer.tls.cert file: tls/server.crt --> file: msp/tls/server.crt
peer.tls.key file: tls/server.key --> file: msp/tls/server.key
peer.tls.rootcert file: tls/ca.crt --> file: msp/tls/ca.crt
peer.tls.clientRootCAs file: - tls/ca.crt --> file: - msp/tls/ca.crt - /home/tlsca.icn.backbonetestnet.baas.dev.icn.engineering-cert.pem
peer.tls.clientKey file: "" --> file: msp/tls/server.key
peer.tls.clientCert file: "" --> file: msp/tls/server.crt
peer.localMspId SampleOrg --> huaweiMSP
•准备证书
A云侧已提供的证书见附件crypto-config.zip文件 core.yaml中peer.tls.clientRootCAs配置项需要的证书,order的tls证书/home/tlsca.icn.backbonetestnet.baas.dev.icn.engineering-cert.pem来自crypto-config.zip中ordererOrganizations/icn.backbonetestnet.baas.dev.icn.engineering/tlsca/目录,peer的tls证书msp/tls/ca.crt来自crypto-config.zip中peerOrganizations/org1.huawei.backbonetestnet.baas.dev.icn.engineering/peers/peer0.org1.huawei.backbonetestnet.baas.dev.icn.engineering/tls/ peer节点和cli节点的/home/msp证书需要使用组织的Admin证书,来自crypto-config.zip中peerOrganizations/org1.huawei.backbonetestnet.baas.dev.icn.engineering/users/Admin@org1.huawei.backbonetestnet.baas.dev.icn.engineering/msp路径 peer节点和cli节点的/home/msp/tls证书都需要使用组织节点的tls证书,来自crypto-config.zip中peerOrganizations/org1.huawei.backbonetestnet.baas.dev.icn.engineering/peers/peer0.org1.huawei.backbonetestnet.baas.dev.icn.engineering/tls
•启动peer容器
docker run -p 7051:7051 -p 7052:7052 -p 7053:7053 -v /var/run:/host/var/run -e CORE_VM_ENDPOINT="unix:///host/var/run/docker.sock" -e CORE_PEER_ADDRESS="0.0.0.0:7052" -e CORE_PEER_GOSSIP_ORGLEADER=false -e CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.huawei.backbonetestnet.baas.dev.icn.engineering:7051 -e CORE_PEER_GOSSIP_USELEADERELECTION=true -e CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.huawei.backbonetestnet.baas.dev.icn.engineering:7051 -it docker.io/hyperledger/fabric-peer:1.2.0 bash
配置CORE_VM_ENDPOINT给链码实例化时使用,必须加CORE_PEER_ADDRESS且必须为IP,给链码容器用,否则链码容器没有域名连不上peer GOSSIP相关的四个环境变量是给后面discovery使用的,不配置的话discovery会不正常