开发者社区 问答 正文

hostname问题

我在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

展开
收起
纸房子 2016-06-11 17:22:32 6265 分享 版权
阿里云 AI 助理回答

遇到“找不到主机,IP”的问题,通常是因为系统无法正确解析主机名到IP地址,或者网络配置有误。从你提供的信息来看,RocketMQ和Tair在启动时都尝试获取本机的主机名(如bajinshengPC2rocketmq-master),但失败了,因为这些名称没有被正确地映射到IP地址上。

以下是一些可能的解决步骤:

  1. 检查hosts文件: 确保你的/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)文件中包含了正确的主机名与IP地址映射。例如,如果主机名为bajinshengPC2,确保有如下一行:

    192.168.1.107 bajinshengPC2
    

    同理,如果使用的是rocketmq-master作为服务标识,请添加相应的条目。

  2. DNS解析: 如果你的环境依赖于DNS解析而不是hosts文件,确认DNS服务器是否能够正确解析这些主机名。你可以尝试使用nslookupdig命令来验证。

  3. 检查网络配置: 确认网络接口配置正确,特别是如果你有多张网卡或复杂的网络设置。确保应用使用的网络接口(如wlan0)是预期的那个,并且其IP地址配置无误。

  4. Java网络属性: 对于基于Java的应用(如RocketMQ),可以通过设置Java系统属性来指定主机名解析的方式。可以在启动脚本中添加以下JVM参数,强制Java使用IP而非主机名:

    -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true
    
  5. 重启服务和网络: 在修改了hosts文件或网络配置后,记得重启相关服务以及可能的网络服务(如NetworkManager、systemd-networkd等),以使更改生效。

  6. 检查防火墙和安全组: 虽然这不太可能是直接原因,但确保没有防火墙规则或云服务的安全组策略阻止了内部通信。

如果以上步骤都不能解决问题,建议进一步检查系统的网络日志,比如/var/log/messages(Linux)或系统事件查看器(Windows),以寻找更详细的错误信息。此外,考虑到RocketMQ的具体报错,也可以检查RocketMQ的配置文件(如namesrv.propertiesbroker.conf),确认其中没有硬编码了不正确的主机名。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答