Google cloud platform 将火花流从本地机器连接到GCP上的卡夫卡

Google cloud platform 将火花流从本地机器连接到GCP上的卡夫卡,google-cloud-platform,apache-kafka,spark-structured-streaming,Google Cloud Platform,Apache Kafka,Spark Structured Streaming,我目前在GCP上有4个虚拟机。1是我的动物园管理员所在地,其他3个是名为kafka-0、kafka-1、kafka-2的卡夫卡经纪人。当在虚拟机内生成/使用消息时,一切正常,但当我尝试从本地机器连接到Kafka时,一切都开始失败。首先,我打开了端口9092的防火墙规则(在所有实例上)。然后,我为每个实例添加了一个静态外部IP。我正在尝试从本地spark流媒体工作连接到我的卡夫卡经纪人 只是为了检查是否正常,我的动物园管理员可以连接到所有的经纪人 i、 ie这个bash命令在我的zookeeper

我目前在GCP上有4个虚拟机。1是我的动物园管理员所在地,其他3个是名为kafka-0、kafka-1、kafka-2的卡夫卡经纪人。当在虚拟机内生成/使用消息时,一切正常,但当我尝试从本地机器连接到Kafka时,一切都开始失败。首先,我打开了端口9092的防火墙规则(在所有实例上)。然后,我为每个实例添加了一个静态外部IP。我正在尝试从本地spark流媒体工作连接到我的卡夫卡经纪人

只是为了检查是否正常,我的动物园管理员可以连接到所有的经纪人

i、 ie这个bash命令在我的zookeeper上运行(10.150.0.6:2181是zookeeper的内部IP)

给我以下输出

Connecting to 10.150.0.6:2181
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[0, 1, 2]
我的第一个方法。我尝试使用代理的外部IP连接到卡夫卡代理之一

val df = sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers",
        "34.86.170.127:9092")
      .option("subscribe", KAFKA_TOPIC_NAME_CONS)
      .option("startingOffsets", "latest")
      .option("failOnDataLoss", false)
      .load()
这给了我以下的错误

 java.net.UnknownHostException: kafka-0.us-west2-c.c.civic-animal-213016.internal: nodename nor servname provided, or not known

我发现这个错误很有趣,因为它在GCP上以某种方式计算出了我的主机名,即使我只给出了它。(这可以从
zookeeper-shell.sh localhost:2181中得到证实。结果是,我对广告的内容感到困惑。listeners=PLAINTEXT://[instance\u public\u id\u address]:9092

我变了

advertised.listeners=PLAINTEXT://kafka-0.us-west2-c.c.civic-animal-213016.internal:9092
对此

advertised.listeners=PLAINTEXT://34.86.170.127:9092

其中34.86.170.127:9092是我在虚拟机实例上的外部IP。

。内部
就是它所说的。我不认为这是你的“公共DNS”名称当我运行zookeeper-shell.sh localhost:2181时,这与您在
广告中输入的信息相同。侦听器
因此,似乎
34.86.170.127:9092
工作正常…您打开了端口,并通过发送了引导请求。然后,返回了内部地址(通过zookeeper),但这些主机名无法在VPCAL外部解析。因此,最好使用多个侦听器。一个用于内部流量,另一个用于外部网络客户端(在网络外部打开明文协议也不是一个好主意,但这是另一个问题)
#advertised.listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://[instance_public_id_address]:9092
advertised.listeners=PLAINTEXT://kafka-0.us-west2-c.c.civic-animal-213016.internal:9092
java.net.UnknownHostException: kafka-0.us-west2-c.c.civic-animal-213016.internal: nodename nor servname provided, or not known
val df = sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers",
        "kafka-0.us-west2-c.c.civic-animal-213016.internal:9092")
      .option("subscribe", KAFKA_TOPIC_NAME_CONS)
      .option("startingOffsets", "latest")
      .option("failOnDataLoss", false)
      .load()
Caused by: org.apache.kafka.common.config.ConfigException: No resolvable bootstrap urls given in bootstrap.servers
advertised.listeners=PLAINTEXT://kafka-0.us-west2-c.c.civic-animal-213016.internal:9092
advertised.listeners=PLAINTEXT://34.86.170.127:9092