現象爲:
微服務註冊到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
重啓應用服務(重新註冊),即可!