文章目录
关于nacos注册的服务的ip异常导致网关路由失败的问题
一次使用nacos作为注册中的时候,发现nacos订阅列表里的服务的ip很奇怪,类似于0.0.1.1这种虚拟网卡的ip,对网关路由失败,服务间的调用不可达。
原因是这里服务器可能有多个网卡,他默认的获取的网卡的ip有问题,可能不是我们要的网段或者是虚拟网卡。
相关处理方案为
修改bootstrap.yaml文件,我使用的版本在nacos的配置列表里修改无法生效;
方案一:手动指定服务注册的 IP 地址
在 bootstrap.yaml或 application.properties 文件中,显式指定服务注册到 Nacos 的 IP 地址。
spring:
cloud:
nacos:
discovery:
ip: 192.168.x.x # 替换为你实际的 IP 地址
方法二:设置优先使用的网络段
在 bootstrap.yaml或 application.properties 文件中
spring:
cloud:
inetutils:
preferred-networks: 192.168 # 替换为你实际的网络前缀
方法三:指定网络接口
在 bootstrap.yaml或 application.properties 文件中
如果你知道服务应该使用哪个网络接口(如 en0 或 Wi-Fi),可以直接指定网络接口名称。
spring:
cloud:
nacos:
discovery:
network-interface: en0 # 替换为你的实际网卡名称
方法四:忽略特定的网卡
在 bootstrap.yaml或 application.properties 文件中
如果你的系统中有虚拟网卡或其他不需要的网卡,可以通过配置忽略它们。
此配置会忽略匹配正则表达式的网卡,避免它们被选中。
spring:
cloud:
inetutils:
ignored-interfaces:
- docker0 # 忽略 Docker 虚拟网卡
- vboxnet.* # 忽略 VirtualBox 虚拟网卡
备注
如果以上方法无效,建议开启调试日志,查看 Nacos 客户端是如何选择 IP 地址的。
在 application.yml 中添加以下配置:
logging:
level:
com.alibaba.nacos: DEBUG
org.springframework.cloud: DEBUG