Eureka注册中心在使用双网卡时候出现的问题记录

目录

Eureka

问题描述

解决方案

版本信息


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中添加一条配置注册中心的配置项,然后在启动类添加对应注。

默认情况下,在注册中心上显示

Eureka注册中心在使用双网卡时候出现的问题记录_第1张图片

可以看到,注册上去的应用是使用的主机名加端口号的形式,关于这种方式,有两个问题和风险:

(1)我们单机调试的时候没问题,但是如果是部署在服务器,通过网关进行访问的时候,很容易出现host没有配置主机名造成访问失败的问题。

(2)如果主机是双网卡的时候,你会发现注册上去的是localhost,这种情况下,必然会造成访问失败。

双网卡情况下注册效果如下:

Eureka注册中心在使用双网卡时候出现的问题记录_第2张图片

 

解决方案

网上查了下关于这块的解决案例很多,我自己也进行尝试,这里给出一个在我们项目中生产上使用的方案,主要是调整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,如下所示:

Eureka注册中心在使用双网卡时候出现的问题记录_第3张图片

按照上述配置,最终显示效果如下:

Eureka注册中心在使用双网卡时候出现的问题记录_第4张图片

版本信息


     8.0.16
     Finchley.SR1
     5.0.2.RELEASE

 

你可能感兴趣的:(Web开发,Java)