Eureka Server 的 Instance Status 一直顯示主機名問題
注冊中心啟動后,訪問 http://localhost:8761/ 后:
如何調整為具體所在的服務器 IP 呢?
解決方案:
application.yml 文件新增:
eureka:
instance:
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
prefer-ip-address: true
配置說明:
(1)eureka.instance.instance-id
指明了status名字命名; eureka.instance.prefer-ip-address
解決了下圖中2位置的問題:
(2) spring.cloud.client.ip-address 屬性是來自於 spring-cloud-commons 包的 org.springframework.cloud.client.HostInfoEnvironmentPostProcessor # postProcessEnvironment()方法:
public void postProcessEnvironment(ConfigurableEnvironment environment,
SpringApplication application) {
InetUtils.HostInfo hostInfo = getFirstNonLoopbackHostInfo(environment);
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
map.put("spring.cloud.client.hostname", hostInfo.getHostname());
map.put("spring.cloud.client.ip-address", hostInfo.getIpAddress());
MapPropertySource propertySource = new MapPropertySource(
"springCloudClientHostInfo", map);
environment.getPropertySources().addLast(propertySource);
}
驗證: