Azure部署Corda网络中Cordapps节点列表返回自身节点信息问题
解决Corda Yo! CorDapp peers接口仅返回单个节点的问题
我来帮你排查下这个问题,大概率是节点网络连通性、发现机制或者配置的问题,你可以按下面的步骤逐一验证:
1. 检查Azure VM的网络安全组(NSG)配置
Corda节点之间依赖P2P端口(默认是10002)进行通信,首先要确保所有节点的这个端口在NSG中是互相开放的:
- 登录Azure门户,找到每个VM对应的NSG,添加入站/出站规则,允许来自其他节点IP的10002端口访问。
- 在每个节点上执行
nc -zv <其他节点IP> 10002或者telnet <其他节点IP> 10002测试连通性,如果不通,先把NSG的规则配置正确。
2. 验证节点的网络映射服务注册状态
所有节点需要在同一个网络映射服务(Network Map Service)上注册才能互相发现:
- 登录到任意节点的Shell,执行
run networkMapSnapshot命令,查看返回的节点列表是否包含你创建的3个节点。如果缺少节点,检查对应节点的启动日志,看是否有注册失败的报错(比如网络不通、身份配置错误)。 - 确认每个节点的
node.conf文件中,networkMapService的配置指向正确的网络映射节点地址,myLegalName的格式也符合规范(比如O=Org1,L=London,C=GB)。
3. 手动触发节点的网络发现
有时候节点刚启动,网络缓存还没同步全量节点信息,你可以手动刷新:
- 在Web应用连接的那个节点的Shell中,执行
run refreshNetworkMapCache命令,强制节点从网络映射服务拉取最新的节点列表。 - 等待1-2分钟后,再调用
http://ipaddress:10004/api/yo/peers接口,看看是否返回所有节点。
4. 确认Yo! CorDapp在所有节点上的安装状态
CorDapp必须在所有节点上安装并生效才能正常交互:
- 在每个节点的Shell中执行
run cordapps命令,查看已安装的CorDapp列表,确保yo-4.jar对应的CorDapp存在。 - 如果某个节点没安装,把jar包放到该节点的
cordapps目录下,然后重启节点。
5. 检查Web应用的节点连接配置
Web应用是通过RPC连接到某个特定节点的,如果这个节点本身没发现其他节点,接口返回的结果就会不全:
- 确认Web应用配置文件中指向的节点RPC地址、端口(默认10003)和认证信息是否正确,并且该节点已经完成了全网络的节点发现。
按照上面的步骤排查下来,应该能解决节点列表不全的问题。
内容的提问来源于stack exchange,提问作者geekybot
相关产品推荐
相关产品推荐

