我下载了已发行版本源码 Nacos 2.2.0
当我启动 Nacos Address Server 后,调用如下接口完成添加节点
POST http://localhost:8080/nacos/v1/as/nodes?product=life&cluster=default&ips=127.0.0.2:8080
但是 Nacos Address Server 却返回了 illegal ip: 127.0.0.2:8080
Expected behavior 期望注册成功
Actually behavior 注册不成功
How to Reproduce 正常运行即可复现
Desktop (please complete the following information):
OS: Win11 Version:Nacos 2.2.0 Module:address SDK 源码方法直接运行 Additional context Add any other context about the problem here. ** 我排查到了问题原因 **
String[] ipArray = addressServerManager.splitIps(ips); 该方法返回的是 按照 逗号 分割的数据,参数为 127.0.0.2:8080 该方法返回 ["127.0.0.2:8080"]
而接下来的方法 InternetAddressUtil.checkIPs(ipArray); 校验 IP 是否合法,该方法只能对单个 ip 进行校验,如果ip:port 形式 则返回失败。 但是调用校验ip方法的参数 确实包含了端口的。
所以这里有个冲突。
这里我猜测难道不能指定port? 只能使用单个ip? 然后端口就用默认的8848?
不过随着我后面的继续翻阅源码。
就是这里,根据 ip 生成 实例 的时候却 取了该字段 (以冒号形式进行了拆分),也就是后面解析了ip:port方法
但是带 port 的ip是传递不过来的
原提问者GitHub用户sixsixsix516
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。