最近因为使用的个人服务器内存不足,打算将分布式应用部分迁移到新机器上,总共有主服务模块(下文以A服务代替),网关服务模块oauth,路由服务模块gateway以及注册中心服务Eureka。两台服务器,分别以A机器和B机器代替。
因为服务器配置比较低,所以打算将A服务放到A机器,其他服务放到B机器。
但是购买腾讯云服务器的时候没注意到不同地区间的内网是不通的,这就导致虽然所有的服务都注册到了B机器上的eureka上,但是调用的时候却调不通。
百度了下原因,发现是我配置了eureka.instance.prefer-ip-address = true,这个配置代表他们将使用IP进行连接,而这个IP是默认为内网的。
参考JillWen的《Spring Cloud Eureka 使用外网IP和端口号进行服务注册》文章,我给Eureka增加eureka.instance.ip-address和eureka.instance.non-secure-port配置,发现并不起作用。
随后将我的A服务,oauth服务,gateway服务里面都加上下面的配置:
#设置使用IP
eureka.instance.prefer-ip-address=true
#设置外网IP号
eureka.instance.ip-address=本服务自己的IP
#设置外网端口号
eureka.instance.non-secure-port=本服务自己的端口
重新打包上传进行访问,发现可以正常访问,至此,eureka使用外网来进行服务间调用的问题完美解决

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐