最近测试服务器项目需要迁移到另一个测试服务器组,遇到一个奇葩问题,记录如下。

一、问题描述

项目启动正常,但是启动后发现某些功能有问题,查看日志发现,kafka报错:
java.io.IOException: Can’t resolve address: t3-xxx-examserv-web04:9092

但是搜索了下java项目的application.properties,关于kafka的配置只配置了ip,并没有配置主机名:
kafka.bootstrap.servers=10.123.123.123:9092

到处都找不到[t3-xxx-examserv-web04],不知道这是个什么东西,哪里配的。

二、解决方法

后来,发现[t3-xxx-examserv-web04]是kafka服务器主机的名称,然后可以通过配置java后台服务器的hosts文件来解决这个问题,具体如下:

1.windows系统
找到java后台项目所在的服务器,找到hosts文件并打开:
C:\Windows\System32\drivers\etc\hosts

在最下方加一行并保存:
10.123.123.123 t3-xxx-examserv-web04

2.linux系统:
找到java后台项目所在的服务器,执行以下命令,打开hosts文件:
sudo vi /etc/hosts

在最下方加一行并保存:
10.123.123.123 t3-xxx-examserv-web04

备注:修改hosts的意思是,当java后台项目根据kafka所在服务器的主机名寻找kafka时,可以找到指定的ip。
(明明只配置了kafka所在服务器的ip,没有配置主机名,为什么java后台会根据主机名找ip呢?它从哪找到的主机名?不清楚…)

三、后记

还有一个问题,项目迁移前的时候,不需要配置hosts文件,也没有问题;项目迁移后,为什么必须配置hosts文件呢?

个人猜测是服务器权限之类的限制增多导致的,但是不确定。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐