Support setting eureka.instance.ip-address and nacos.discovery.ip through system properties or env

This commit is contained in:
hongqiaowei
2022-03-22 16:53:16 +08:00
parent e6a9814ad2
commit 3ebd1ee1a1
3 changed files with 31 additions and 6 deletions

View File

@@ -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) {

View File

@@ -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")));
}

View File

@@ -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 {