Running corda nodes in different machines

烈酒焚心 提交于 2019-12-24 09:06:38

问题


I have the problem in Corda regarding performing IOU from Party A to Party B. Below is configuration detail:

  • 3 node.conf [Party A, Party B, and Notary ].
  • Hosting application in AWS, So in node config file instead of "localhost", I gave the IP of the machines. I gave the same IP for Notary & Party A, different for Party B.

Network Bootstrapping was successful and moved the newly created node folders respective EC2 instances and started run nodes. But when performed the IOU from Party A to Party B it's not working. Please suggest how to resolve the issue.

I see the following error in the node logs:

E 11:34:47+0000 [main] internal.Node.run - Exception during node startup {}
java.net.BindException: Cannot assign requested address: bind
    at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_161]
    at sun.nio.ch.Net.bind(Unknown Source) ~[?:1.8.0_161]
    at sun.nio.ch.Net.bind(Unknown Source) ~[?:1.8.0_161]
    at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) ~[?:1.8.0_161]
    at io.netty.channe

Reference: https://docs.corda.net/tutorial-cordapp.html#running-nodes-across-machines


回答1:


I reach node communication on different hosts by the following way.

First of all I deploy node with node.conf file which contains

"p2pAddress" : "host:10012",
    "rpcSettings" : {
        "address" : "host:10014",
        "adminAddress" : "host:10013"
    }

Then after node deployed I change host of rpcSettings to localhost

"rpcSettings" : {
        "address" : "localhost:10014",
        "adminAddress" : "localhost:10013"
    }

Such way looks strange, however after this manipulation nodes started to communicate

This is related with NodeInfo file which is generated at node deploy and it should contains the host for rpc. After that rpc needs localhost for interaction. I think it might be a bug, but works fine in that way.




回答2:


When using rpcSettings in Corda V3.1 the address and adminAddress need to be using 0.0.0.0.

rpcSettings {
    address="0.0.0.0:10003"
    adminAddress="0.0.0.0:10103"
}

These endpoints are not advertised externally so the local ip is solely a binding for Corda.

This should solve the following exception on starting your cordapp when using public ip or DNS:

E 21:28:56+0000 [main] internal.Node.run - Exception during node startup {} io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Cannot assign requested address



来源:https://stackoverflow.com/questions/49935523/running-corda-nodes-in-different-machines

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!