You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Corda 3.1节点用主机名做p2pAddress出现端点错误问题咨询

解决Corda 3.1使用主机名作为p2pAddress的交易报错问题

当然可以用主机名啦!你遇到的Message for incorrect endpoint错误,本质是节点P2P通信时的地址匹配不一致导致的——虽然节点能正常启动,但交易时节点之间的地址验证通不过。针对你的AWS负载均衡场景,咱们一步步调整配置来解决:

1. 给节点添加公开地址声明

Corda节点默认会把自己监听的实际地址告诉其他节点,但如果你的节点藏在负载均衡后面,得明确告诉其他节点你的公开访问地址(也就是负载均衡的hostname)。修改你的node.conf,添加advertisedServices配置:

myLegalName : "O=Bank A,L=London,C=GB"
p2pAddress : "my-load-balancer-hostname.aws.com:10002"
# 新增这部分,明确对外声明的P2P地址
advertisedServices = {
    p2p = "my-load-balancer-hostname.aws.com:10002"
}
rpcSettings = {
    address : "localhost:10003"
    adminAddress : "localhost:10004"
}
rpcUsers : [
    { username=user1, password=test, permissions=[ ALL ] }
]
devMode : true

这个配置会让节点对外发送的所有P2P消息里,都用负载均衡hostname作为自己的地址,避免其他节点收到消息后发现地址不匹配。

2. 检查AWS负载均衡的关键配置

  • 确保负载均衡的后端目标组是TCP协议(Corda P2P用TCP而非HTTP),并且正确指向节点的10002端口。
  • 关掉负载均衡的会话粘性,Corda节点之间的P2P连接是动态建立的,不需要固定会话绑定。
  • 确认负载均衡的安全组允许所有参与交易的节点双向访问10002端口,别把流量拦下来了。

3. 验证所有节点的hostname解析一致

在每一个要参与交易的Corda节点上,跑一下这个命令验证hostname解析:

nslookup my-load-balancer-hostname.aws.com

要保证所有节点解析出来的都是负载均衡的前端IP,这样流量才能先到负载均衡,再转发到你的节点。

4. 证书配置检查(可选)

如果你的节点用了自定义证书,得确保证书的subjectAltName字段包含这个负载均衡hostname,不然可能会触发TLS握手失败(虽然你现在的错误是端点不匹配,但证书问题也可能间接引发类似故障)。


至于为什么用IP能正常工作?很简单——当你把p2pAddress设为节点的实际IP时,所有节点解析到的地址就是节点直接监听的IP,不存在地址映射的偏差,自然能通过端点验证,交易也就正常了。

内容的提问来源于stack exchange,提问作者gaugfather

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:51:32