我在RocketMQ和Tair里面都遇到这个问题就是找不到主机,IP 可是hostname命令正常,hosts文件都改了
本地网卡信息:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1308 (1.2 KiB) TX bytes:1308 (1.2 KiB)
wlan0 Link encap:Ethernet HWaddr 24:0A:64:2B:3F:43
inet addr:192.168.1.107 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::260a:64ff:fe2b:3f43/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:130083 errors:0 dropped:0 overruns:0 frame:0
TX packets:87555 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:176934698 (168.7 MiB) TX bytes:8626995 (8.2 MiB)
RocketMQ中nohup.out文件内容:
java.lang.ExceptionInInitializerError
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main0(NamesrvStartup.java:125)
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main(NamesrvStartup.java:70)
Caused by: java.lang.RuntimeException: InetAddress java.net.InetAddress.getLocalHost() throws UnknownHostException
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:458)
at com.alibaba.rocketmq.common.MixAll.<clinit>(MixAll.java:82)
... 2 more
Caused by: java.net.UnknownHostException: bajinshengPC2: bajinshengPC2: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:454)
... 3 more
Caused by: java.net.UnknownHostException: bajinshengPC2: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1295)
at java.net.InetAddress.getLocalHost(InetAddress.java:1471)
... 4 more
java.lang.ExceptionInInitializerError
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main0(NamesrvStartup.java:125)
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main(NamesrvStartup.java:70)
Caused by: java.lang.RuntimeException: InetAddress java.net.InetAddress.getLocalHost() throws UnknownHostException
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:458)
at com.alibaba.rocketmq.common.MixAll.<clinit>(MixAll.java:82)
... 2 more
Caused by: java.net.UnknownHostException: bajinshengPC2: bajinshengPC2: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:454)
... 3 more
Caused by: java.net.UnknownHostException: bajinshengPC2: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1295)
at java.net.InetAddress.getLocalHost(InetAddress.java:1471)
... 4 more
java.lang.ExceptionInInitializerError
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main0(NamesrvStartup.java:125)
at com.alibaba.rocketmq.namesrv.NamesrvStartup.main(NamesrvStartup.java:70)
Caused by: java.lang.RuntimeException: InetAddress java.net.InetAddress.getLocalHost() throws UnknownHostException
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:458)
at com.alibaba.rocketmq.common.MixAll.<clinit>(MixAll.java:82)
... 2 more
Caused by: java.net.UnknownHostException: rocketmq-master: rocketmq-master: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1475)
at com.alibaba.rocketmq.common.MixAll.localhost(MixAll.java:454)
... 3 more
Caused by: java.net.UnknownHostException: rocketmq-master: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1295)
at java.net.InetAddress.getLocalHost(InetAddress.java:1471)
... 4 more
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到“找不到主机,IP”的问题,通常是因为系统无法正确解析主机名到IP地址,或者网络配置有误。从你提供的信息来看,RocketMQ和Tair在启动时都尝试获取本机的主机名(如bajinshengPC2
和rocketmq-master
),但失败了,因为这些名称没有被正确地映射到IP地址上。
以下是一些可能的解决步骤:
检查hosts文件: 确保你的/etc/hosts
(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts
(Windows)文件中包含了正确的主机名与IP地址映射。例如,如果主机名为bajinshengPC2
,确保有如下一行:
192.168.1.107 bajinshengPC2
同理,如果使用的是rocketmq-master
作为服务标识,请添加相应的条目。
DNS解析: 如果你的环境依赖于DNS解析而不是hosts文件,确认DNS服务器是否能够正确解析这些主机名。你可以尝试使用nslookup
或dig
命令来验证。
检查网络配置: 确认网络接口配置正确,特别是如果你有多张网卡或复杂的网络设置。确保应用使用的网络接口(如wlan0)是预期的那个,并且其IP地址配置无误。
Java网络属性: 对于基于Java的应用(如RocketMQ),可以通过设置Java系统属性来指定主机名解析的方式。可以在启动脚本中添加以下JVM参数,强制Java使用IP而非主机名:
-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true
重启服务和网络: 在修改了hosts文件或网络配置后,记得重启相关服务以及可能的网络服务(如NetworkManager、systemd-networkd等),以使更改生效。
检查防火墙和安全组: 虽然这不太可能是直接原因,但确保没有防火墙规则或云服务的安全组策略阻止了内部通信。
如果以上步骤都不能解决问题,建议进一步检查系统的网络日志,比如/var/log/messages
(Linux)或系统事件查看器(Windows),以寻找更详细的错误信息。此外,考虑到RocketMQ的具体报错,也可以检查RocketMQ的配置文件(如namesrv.properties
或broker.conf
),确认其中没有硬编码了不正确的主机名。