From 3ebd1ee1a163d07a4658464447434abd02d0bed3 Mon Sep 17 00:00:00 2001 From: hongqiaowei Date: Tue, 22 Mar 2022 16:53:16 +0800 Subject: [PATCH] Support setting eureka.instance.ip-address and nacos.discovery.ip through system properties or env --- .../service_registry/eureka/FizzEurekaHelper.java | 15 +++++++++++---- .../service_registry/nacos/FizzNacosHelper.java | 12 +++++++++++- .../nacos/FizzNacosProperties.java | 10 +++++++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/fizz-core/src/main/java/we/service_registry/eureka/FizzEurekaHelper.java b/fizz-core/src/main/java/we/service_registry/eureka/FizzEurekaHelper.java index d8c0cc6..62da1ba 100644 --- a/fizz-core/src/main/java/we/service_registry/eureka/FizzEurekaHelper.java +++ b/fizz-core/src/main/java/we/service_registry/eureka/FizzEurekaHelper.java @@ -20,6 +20,7 @@ package we.service_registry.eureka; import com.netflix.appinfo.ApplicationInfoManager; import com.netflix.appinfo.HealthCheckHandler; import com.netflix.appinfo.InstanceInfo; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.commons.util.InetUtilsProperties; @@ -97,11 +98,17 @@ public abstract class FizzEurekaHelper { assert serverPort != null; eurekaInstanceConfig.setNonSecurePort(Integer.parseInt(serverPort)); - String ipAddress = eurekaInstanceConfig.getIpAddress(); - if (ipAddress == null) { - ipAddress = inetUtils.findFirstNonLoopbackAddress().getHostAddress(); - eurekaInstanceConfig.setIpAddress(ipAddress); + String ipAddress = System.getProperty("eureka.instance.ip-address"); + if (StringUtils.isBlank(ipAddress)) { + ipAddress = System.getenv("eureka.instance.ip-address"); + if (StringUtils.isBlank(ipAddress)) { + ipAddress = eurekaInstanceConfig.getIpAddress(); + if (ipAddress == null) { + ipAddress = inetUtils.findFirstNonLoopbackAddress().getHostAddress(); + } + } } + eurekaInstanceConfig.setIpAddress(ipAddress); String instanceId = eurekaInstanceConfig.getInstanceId(); if (instanceId == null) { diff --git a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java index d8269e2..92d5807 100644 --- a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java +++ b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java @@ -21,10 +21,10 @@ import com.alibaba.cloud.nacos.NacosServiceManager; import com.alibaba.cloud.nacos.registry.NacosRegistration; import com.alibaba.cloud.nacos.registry.NacosServiceRegistry; import com.alibaba.nacos.api.naming.NamingService; +import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; import we.util.Consts; -import we.util.JacksonUtils; import we.util.PropertiesUtils; import we.util.ReflectionUtils; @@ -63,6 +63,16 @@ public abstract class FizzNacosHelper { if (fizzNacosProperties.getService() == null) { fizzNacosProperties.setService(env.getProperty("spring.application.name")); } + String ip = fizzNacosProperties.getIp(); + if (StringUtils.isBlank(ip)) { + ip = System.getProperty("nacos.discovery.ip"); + if (StringUtils.isBlank(ip)) { + ip = System.getenv("nacos.discovery.ip"); + } + if (StringUtils.isNotBlank(ip)) { + fizzNacosProperties.setIp(ip); + } + } if (fizzNacosProperties.getPort() == -1) { fizzNacosProperties.setPort(Integer.parseInt(env.getProperty("server.port"))); } diff --git a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosProperties.java b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosProperties.java index f006c59..63e734e 100644 --- a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosProperties.java +++ b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosProperties.java @@ -20,7 +20,9 @@ package we.service_registry.nacos; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.nacos.api.naming.PreservedMetadataKeys; import com.alibaba.nacos.client.naming.utils.UtilAndComs; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.commons.util.InetUtilsProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.util.StringUtils; @@ -117,7 +119,13 @@ public class FizzNacosProperties extends NacosDiscoveryProperties { if (StringUtils.isEmpty(ip)) { if (StringUtils.isEmpty(networkInterface)) { - ip = applicationContext.getBean(InetUtils.class).findFirstNonLoopbackHostInfo().getIpAddress(); + InetUtils inetUtils = null; + try { + inetUtils = applicationContext.getBean(InetUtils.class); + } catch (NoSuchBeanDefinitionException e) { + inetUtils = new InetUtils(new InetUtilsProperties()); + } + ip = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); } else { NetworkInterface netInterface = null; try {