我正在尝试使用节点sdk迁移超账结构解决方案。当前的系统使用结构1.2,并且可以按预期工作,但是我想要1.3的新功能。
我已将网络更新为1.3,将节点sdk更新为1.3.0,并将应用程序代码更改为使用通道eventhub。但是在安装chaincode时,我遇到了一个对等体超过1个的组织的问题。由于某种原因,我只能在具有一个对等方的组织上安装chaincode?似乎eventhub无法连接到同一组织中的其他对等方。在查看来自同行的日志时,我也只看到来自可以连接到eventhub的日志的流量
我在做什么:
对于给定的组织,我有3个对等点应安装chaincode。为了进行测试,我在localhost上有3个对等项,配置如下:
{
host: "peer0",
url: `grpcs://${Config.ip}:8001`,
publicKey: readFileSync(resolve("./resources/certs/some.org/peer0.pem")).toString()
},
{
host: "peer1",
url: `grpcs://${Config.ip}:8002`,
publicKey: readFileSync(resolve("./resources/certs/some.org/peer1.pem")).toString()
},
{
host: "peer2",
url: `grpcs://${Config.ip}:8003`,
publicKey: readFileSync(resolve("./resources/certs/some.org/peer2.pem")).toString()
}
因此,在执行任何操作之前,我为每个对等端初始化eventhub,如下所示:
initEventHubs() {
// Setup event hubs
try {
// Now: 1.3.0
this._peers.forEach((peer: Peer) => {
const eventHub = this._channel.newChannelEventHub(peer);
eventHub.registerBlockEvent((block: any) => {
logger.debug('block', Utils.unmarshalBlock(block));
this.emit('block', Utils.unmarshalBlock(block));
}, (err) => {
logger.error(err);
});
eventHub.connect(true);
this._eventHubs.push(eventHub);
});
// Before: 1.2.0
/*this._organisation.peers.forEach((peer: any) => {
const eventHub = this._client.newEventHub();
const peerOptions: object = {
pem: peer.publicKey,
'ssl-target-name-override': peer.host
};
eventHub.setPeerAddr(peer.eventHub, peerOptions);
eventHub.connect();
eventHub.registerBlockEvent((block: any) => {
this.emit('block', Utils.unmarshalBlock(block));
});
this._eventHubs.push(eventHub);
});*/
} catch (e) {
logger.error(`Failed to configure event hubs. Error ${e.message}`);
}
}
当我执行频道创建或尝试加入频道时,peer2
会正常工作并表现出预期的效果。
另外两个人正在从事件中心Error: 14 UNAVAILABLE: Connect Failed
抛出error: [Remote.js]: Error: Failed to connect before the deadline URL:grpcs://localhost:8001
。它们在正确的端口并且可以到达。如果我只是在同一端口使用相同配置的同一个对等体,那么它将起作用。
有人在同一个组织的多个对等节点上通过节点sdk安装1.3和chaincode吗?如果可以,那么任何人都可以解释它是如何做到的?
我还在其他地方寻找示例,但是没有找到相同组织的多个同等版本1.3。有一些1.2的示例,但没有确切的例子:fabric samples,fabric node sdk和tests from the fabric node sdk