现象为:
微服务注册到Eureka Server后,服务IP为127.0.0.1
查看服务环境
因为我没有配置spring.cloud.client.hostname变量,所以默认取操作系统的主机名,查看验证:
[ddh_tyqx@localhost apiservice]$ hostname
localhost.localdomain
果然如此!而此主机名有配置对应IP,如下:
[ddh_tyqx@localhost apiservice]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
所以,服务注册上去后,IP为127.0.0.1
解决办法:
修改主机名,我们将主机名改成CentOS
[ddh_tyqx@localhost apiservice]#sudo hostnamectl --static set-hostname CentOS
若主机名没有配置对应的IP地址,由会依次(可用网络设备)选择一个IP作为注册服务IP(可外部访问的IP),如果服务器上有多个可以外部访问的IP,可以配置:以指定选择网段或忽略网络设备的方式进行配置,方法:
配置优先选择网段方法:
spring.cloud.inetutils.preferredNetworks[0]: 10.176
spring.cloud.inetutils.preferredNetworks[1]: 192.168.1
spring.cloud.inetutils.preferredNetworks[2]: 192.168
忽略网络设置的方法
spring.cloud.inetutils=ignored-interfaces[0]=VirtualBox Host-Only Ethernet Adapter
spring.cloud.inetutils=ignored-interfaces[1]=VMware Virtual Ethernet Adapter for VMnet1
spring.cloud.inetutils=ignored-interfaces[2]=VMware Virtual Ethernet Adapter for VMnet8
spring.cloud.inetutils=ignored-interfaces[3]=TAP-Windows Adapter V9
spring.cloud.inetutils=ignored-interfaces[4]=TAP-Windows Adapter V9 #2
spring.cloud.inetutils=ignored-interfaces[5]=TAP-Windows Adapter V9 #2 #2
spring.cloud.inetutils=ignored-interfaces[6]=TAP-Windows Adapter V9 #1
spring.cloud.inetutils=ignored-interfaces[7]=VirtualBox Host-Only Ethernet Adapter #2
spring.cloud.inetutils=ignored-interfaces[8]=Microsoft Hosted Network Virtual Adapter
spring.cloud.inetutils=ignored-interfaces[9]=WAN Miniport(IKEv2)
自动解析主机名为IP及ID格式配置方法
eureka.instance=instance-id=${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}
eureka.instance=preferIpAddress=true
重启应用服务(重新注册),即可!