解析位于不同区域的虚拟机的地址:Google Cloud

解析位于不同区域的虚拟机的地址:Google Cloud

我对 Google Cloud Platform 和网络完全是新手。我尝试在位于不同区域的两个虚拟机之间进行通信。当我 ping 主机或使用 IP 地址 ssh 时,它们正在运行文件。

但是当我尝试从 Java 程序访问虚拟机时,出现了以下异常。有人能帮我吗

java.io.IOException: Can't resolve address: kafka-3:9092
        at org.apache.kafka.common.network.Selector.doConnect(Selector.java:235) ~[kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.common.network.Selector.connect(Selector.java:214) ~[kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:864) [kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.NetworkClient.access$700(NetworkClient.java:64) [kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1035) [kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:920) [kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:508) [kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:239) [kafka-clients-2.0.0.jar!/:?]
        at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:163) [kafka-clients-2.0.0.jar!/:?]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
Caused by: java.nio.channels.UnresolvedAddressException
        at sun.nio.ch.Net.checkAddress(Net.java:101) ~[?:1.8.0_181]
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622) ~[?:1.8.0_181]
        at org.apache.kafka.common.network.Selector.doConnect(Selector.java:233) ~[kafka-clients-2.0.0.jar!/:?]
        ... 9 more

答案1

如果您只使用 GCP 计算实例,则您有以下几种选择:

  1. 在所有实例中使用所有硬编码 IP 和主机名配置 /etc/hosts(不推荐,仅用于调试目的)
  2. 设置托管的 Cloud DNS 区域,并为每个实例创建一个条目,然后使用 DNS:https://cloud.google.com/dns/docs/overview
  3. 使用内部 DNS,这是 Google 默认提供的一种 DNS 区域:https://cloud.google.com/compute/docs/internal-dns

您可能有更多选择,但这三个是常用的。

相关内容