当 运行 Kafka 和 Kafka-connect 在不同服务器上时无法连接到 kafka 集群

Failed to connect to kafka cluster When running Kafka and Kafka-connect on different servers

I 运行 Kafka 和 Kafka-connect 在不同的服务器上(假设是 serverA 和 serverB)

用于 kafka 连接的服务器 A

# vi /home/kafka/config/connect-distributed.properties

bootstrap.servers=serverB:9092
rest.host.name=localhost
rest.port=8083

kafka 的服务器 B

# vi server.properties 

broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://serverA:9092
delete.topic.enable = true

但是,当我 运行 kafka 连接到 serverA 时,出现错误。

[2020-04-30 16:59:37,053] ERROR Stopping due to error (org.apache.kafka.connect.cli.ConnectDistributed:84)
org.apache.kafka.connect.errors.ConnectException: Failed to connect to and describe Kafka cluster. Check worker's broker connection and security properties.
        at org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:64)
        at org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:45)
        at org.apache.kafka.connect.cli.ConnectDistributed.startConnect(ConnectDistributed.java:95)
        at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:78)
Caused by: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Call(callName=listNodes, deadlineMs=1588233577048) timed out at 1588233577049 after 1 attempt(s)
        at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
        at org.apache.kafka.common.internals.KafkaFutureImpl.access[=13=]0(KafkaFutureImpl.java:32)
        at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89)
        at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
        at org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:58)
        ... 3 more
Caused by: org.apache.kafka.common.errors.TimeoutException: Call(callName=listNodes, deadlineMs=1588233577048) timed out at 1588233577049 after 1 attempt(s)
Caused by: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.

仅供参考,如果我 运行 kafka 连接到 kafka server(serverB),它就成功了。但是,我想 运行 这些在不同的服务器上。

如何将 kafka-connect 连接到 kafka?

在你的 server.properties 你有

advertised.listeners=PLAINTEXT://serverA:9092

但是 Kafka connnects 使用

bootstrap.servers=serverB:9092

而不是

bootstrap.servers=serverA:9092