我正在尝试将Hyperledger Fabric入门移植到Kubernetes。但我正在努力让peer1
部署。如果我启用CORE_PEER_GOSSIP_BOOTSTRAP
,则会收到错误“从具有与我自己相同的PKI-ID的对等方收到AliveMessage”。
如何调试据报道具有与另一个PKI-ID相同的PKI-ID?
以此为出发点:
https://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html
我能够创建:
orderer
以及cli
命名空间中的default
个广告
peer0
在每个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
上针对这些端点打开套接字。
答案 0 :(得分:1)
如果对等体是从同一节点启动的,则可能是为两个对等体安装了相同的加密材料(mspconfig目录的路径)。如果是这种情况,请将两个对等体的目录结构分开,并在其中保留各自的证书,在docker-compose文件中更新msp的相应路径并尝试运行。
答案 1 :(得分:1)
首先,请确保您使用的证书正确。
其次,验证您的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
希望这对我有帮助。而且我能够成功地连接同伴。