目录
Eureka
关于eureka的博文非常多,这里引用一篇,具体见《eureka服务注册与发现》
问题描述
先看一下最基本的使用
#application.properties中设置eureka的注册中心server的地址
eureka.client.service-url.defaultZone=http://192.168.1.121:7971/eureka/
@SpringBootApplication
@EnableEurekaClient
public class DsBisprojectApplication {
public static void main(String[] args) {
SpringApplication.run(DsBisprojectApplication.class, args);
}
}
在properties中添加一条配置注册中心的配置项,然后在启动类添加对应注。
默认情况下,在注册中心上显示
可以看到,注册上去的应用是使用的主机名加端口号的形式,关于这种方式,有两个问题和风险:
(1)我们单机调试的时候没问题,但是如果是部署在服务器,通过网关进行访问的时候,很容易出现host没有配置主机名造成访问失败的问题。
(2)如果主机是双网卡的时候,你会发现注册上去的是localhost,这种情况下,必然会造成访问失败。
双网卡情况下注册效果如下:
解决方案
网上查了下关于这块的解决案例很多,我自己也进行尝试,这里给出一个在我们项目中生产上使用的方案,主要是调整application.properties中的配置信息,如下所示:
eureka.client.service-url.defaultZone=http://192.168.1.121:7971/eureka/
eureka.instance.ip-address=192.168.1.110
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${eureka.instance.ip-address}:${server.port}
其中,在双网卡情况下,eureka.instance.ip-address是一定要配置的,如果仅仅配置后两项,在注册中心上显示的IP是你指定的IP,但其实真正生效注册的IP还是内网IP,如下所示:
按照上述配置,最终显示效果如下:
版本信息
<properties>
<mysql-connector-version>8.0.16</mysql-connector-version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
<tx-version>5.0.2.RELEASE</tx-version>
</properties>