Hyperledger orderer <-> 对等连接在 MS Azure 上一段时间后中断

Hyperledger orderer <-> peer connection breaks after a while on MS Azure

我在云中有 2 台不同的机器。

第一台机器上的容器:

orderer.mydomain.com
peer0.org1.mydomain.com
db.peer0.org1.mydomain.com
ca.org1.mydomain.com

第二台机器上的容器:

peer0.org2.mydomain.com
db.peer0.org2.mydomain.com
ca.org2.mydomain.com

我都开始了。我可以让他们都加入同一个频道。我将从 hyperledger composer 导出的 BNA 部署到两个对等方。我将交易发送到 peer0.org1.mydomain.com 并查询并从 peer0.org2.mydomain.com.

获得相同的结果

到目前为止一切正常。

然而,5 到 10 分钟后,第二台机器 (peer0.org2) 上的对等点与订购者断开连接。当我将事务发送到 org1 时,我可以从 org1 查询它们并看到结果。但是 org2 被分离了。不接受新交易。 (订购者连接消失)我可以查询 org2 并查看旧结果。

我将 CORE_CHAINCODE_KEEPALIVE=30 添加到我的对等环境变量中。我在 org2 peers 日志中看到了 keep alive 操作。但是没有解决我的问题。

我应该注意:容器位于名为 "basic" 的 docker 网络中。该网络用于我的本地计算机。但是它仍然可以在云端工作。

在订购者日志中:

Error sending to stream: rpc error: code = Internal desc = transport is closing

我每次尝试都会出现这种情况。但是当我 运行 这些容器在我的本地机器上时,它们保持连接没有问题。

EDIT1:检查日志后:peer0.org2 收到所有 tx 并将它们发送给订购者。 Orderer 接收来自 peer 的请求,但不能更新 peers。我可以连接到有问题的对等点上的 requestUrl 或 eventUrl。没有网络问题。

我想我发现了问题。它是关于 MS Azure 网络的。 4 分钟后,azure 切断了空闲连接:

https://discuss.pivotal.io/hc/en-us/articles/115005583008-Azure-Networking-Connection-idle-for-more-than-4-minutes

编辑 1:

是的,问题出在 MS Azure 上。如果有人试图在 Azure 上 运行 hyperledger,请记住,如果 peer 保持空闲超过 4 分钟,则 azure 会超时 tcp 连接。您可以将其配置为 30 分钟后超时。这不是一个错误,但我们无法理解为什么它在 4 分钟后无法正常工作,这让我们很恼火。

因此您可以使用自己的服务器或其他云解决方案,或者通过适应他们的规则来使用 azure。