我正在尝试将Hyperledger Fabric入门移植到Kubernetes。但我正在努力让peer1
部署。如果我启用CORE_PEER_GOSSIP_BOOTSTRAP
,我会收到错误“从具有与我自己相同的PKI-ID的对等方收到AliveMessage”。
如何调试具有相同PKI-ID的对等体?
以此为出发点:
https://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html
我能够创建:
orderer
命名空间中的cli
和default
podspeer0
是每个org1
| org2
命名空间中的一个。peer1
的,但只有我禁用(评论)CORE_PEER_GOSSIP_BOOTSTRAP
如果我为CORE_PEER_GOSSIP_BOOTSTRAP
启用peer1
,我收到以下警告和错误:
[gossip/gossip#10.0.0.10:7051] NewGossipService -> WARN 01c External endpoint is empty, peer will not be accessible outside of its organization
...
[gossip/discovery#10.0.0.10:7051] handleAliveMessage -> ERRO 02a Bad configuration detected: Received AliveMessage from a peer with the same PKI-ID as myself: tag:EMPTY alive_msg:<membership:<pki_id:"[[REDACTED]]" > timestamp:<inc_number:1495468533769417608 seq_num:416 > >
为了更好地将Orderer
,Peers
映射到DNS名称,我正在使用Kubernetes命名空间和此配置:
OrdererOrgs:
- Name: Orderer
Domain: default.svc.cluster.local
Specs:
- Hostname: orderer
PeerOrgs:
- Name: Org1
Domain: org1.svc.cluster.local
Template:
Count: 2
Users:
Count: 2
- Name: Org2
Domain: org2.svc.cluster.local
Template:
Count: 2
Users:
Count: 2
为了将peer0
暴露给组织中的其他同伴并暴露orderer
,我为ClusterIP
(仅选择peer0
)和peer0
提供orderer
服务。它不够优雅,但我试图让它工作,然后让它更美丽地工作。
我能够在部署到集群默认的pod中使用nslookup解析orderer.default.svc.cluster.local
,peer0.org1.svc.cluster.local
,`peer0.org2.svc.cluster.local'。
如果没有gPRC的卷曲工具,我可以在7051
和7053
上打开这些端点的插座。
如果对等体是从同一节点启动的,则可能是为两个对等体安装了相同的加密材料(mspconfig目录的路径)。如果是这种情况,请将两个对等体的目录结构分开,并在其中保留各自的证书,在docker-compose文件中更新msp的相应路径并尝试运行。
首先,确保使用正确的证书。其次,验证gossip
的环境/配置是否设置正确
environment:
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:8051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_GOSSIP_ENDPOINT=peer0.org1.example.com:7051
或者在core.yaml中
peer:
gossip:
bootstrap: peer0.org1.example.com:7051
externalEndpoint: peer1.org1.example.com:8051
endpoint: peer0.org1.example.com:7051
编辑:还要确保你已正确设置你的CA
希望这有帮助,它对我有用。我成功地连接了同行。