依赖nacos服务注册包:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.7</version>
</dependency>
问题:
两个节点10.**.**.15和10.**.**.21注册到nacos上,但是nacos页面中查看10.**.**.15地址与实际不符合?如下:127.0.0.1实际服务ip应该是10.**.**.15。
问题定位:
- 核查15和21环境/etc/hosts发现没有太大差别
- 图1,查看服务注册源码NacosDiscoveryAutoRegister使用NetUtils.localIP()获取ip方法。
- 图2,查看NetUtils源码,使用InetAddress.getLocalHost().getHostAddress()获取ip。
- 图3,进入InetAddress.getLocalHost()方法,通过getLocalHostName()映射ip,如果getLocalHostName()获取值是localhost,则返回loopbackAddress()回环ip-127.0.0.1。
- 查看了21服务hostname不是localhost,而15服务hostname为localhost。
- 故得出结论,如果想要得到真实ip,则服务的hostname不能为localhost。
- 使用“[root@localhost ~]# hostname 新主机名”,修改15的hostname。