背景
微服务部署后,各服务是需要相互间调用的,其中服务A在去调用服务B的时候发现无法调用成功。其中服务注册和发现中心以及配置中心使用的是Nacos。Nacos客户端在注册服务时会从机器网卡中选择其中一个IP来注册,当我们要部署的机器存在多个网卡(例如存在虚拟网卡)时,所选则的IP可能不是我们真正想要获取的物理机的IP,所以,当注册的是非真实IP后,另一台机器上的服务调用另一个服务的时后是不可能调通的。
今天在处理系统bug的时候发现了这个bug问题,是因为当我们的服务注册到nacos后,nacos默认读取到了服务所在服务器的内网ip,而没有获取到外网ip
解决方案
当发现这个问题后,就赶紧去Springcloud官网查看了一番解决方案:
发现了这么一个配置:
pring:
application:
name: SysManager
cloud:
inetutils:
preferred-networks: 192.168.0 # 配置nacos上容器注册的ip是指定网段
该项配置用来去指定首选IP的,当有多个网卡时,指定该IP地址后(支持正则),客户端在选择IP时就会优先选择符合preferredNetworks配置的IP地址进行注册。
同样的,Nacos也是可以配置自己的首选IP以及网卡选择:
spring.cloud.nacos.discovery.ip:
spring.cloud.nacos.discovery.networkInterface
我们这里的解决方案就是在nacos中国你配置我们的外网ip
好了今天关于微服务注册到Nacos后如何读取外网IP就到这里。
这篇文章因为文字段被标记为质量低,以下文字就是为了打破它的文字段而造成的质量低!
相信和我一样遇到这个问题的的小伙伴们,心里也已经暗自问候了这个产品经理的祖总十八代了吧!
算法实在是不敢苟同,文字的长短和文章的质量有毛线的关系吗?
欢迎大家点击下方公众号卡片,关注《coder练习生》