领头人不在游戏机生产商Kafka

dzhpxtsq  于 2021-06-07  发布在  Kafka
关注(0)|答案(25)|浏览(431)

我想用Kafka。
所有的配置都做得很好,但是当我试图从控制台生成消息时,我总是得到以下错误

WARN Error while fetching metadata with correlation id 39 : 
     {4-3-16-topic1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

Kafka版本: 2.11-0.9.0.0

whitzsjs

whitzsjs1#

我尝试了这里列出的所有建议。对我有用的是 server.properties 并添加:

port = 9092
advertised.host.name = localhost

离开 listeners 以及 advertised_listeners 评论道。

z9zf31ra

z9zf31ra2#

上述答案中提到的广告听众可能是原因之一。其他可能的原因有:
主题可能尚未创建。你可以使用 bin/kafka-topics --list --zookeeper <zookeeper_ip>:<zookeeper_port> 检查您提供给生产者的引导服务器以获取元数据。如果引导服务器不包含关于主题的最新元数据(例如,当它丢失了zookeeper声明时)。必须添加多个引导服务器。
另外,请确保将播发的侦听器设置为 IP:9092 而不是 localhost:9092 . 后者意味着代理只能通过localhost访问。
当我遇到错误时,我记得 PLAINTEXT://<ip>:<PORT> 在引导服务器列表(或代理列表)中,它工作得很奇怪。

bin/kafka-console-producer --topic sample --broker-list PLAINTEXT://<IP>:<PORT>
j2qf4p5b

j2qf4p5b3#

我让Kafka作为一个docker容器运行,类似的消息充斥着日志。
以及 KAFKA_ADVERTISED_HOST_NAME 设置为“Kafka”。
就我而言,错误的原因是 /etc/hosts 在“kafka”容器中记录“kafka”。
例如,跑步 ping kafka “kafka”容器内部会出现故障 ping: bad address 'kafka' 对于docker来说,这个问题可以通过指定 hostname 对于容器。
实现这一目标的选择: docker run --hostname ... docker run -it --add-host ... hostname 在docker compose中 hostname 在aws ec2任务定义中

q3aa0525

q3aa05254#

因为我想让我的kafka经纪人与远程生产者和消费者建立联系,所以我不想 advertised.listener 被注解掉。在我的例子中,(在kubernetes上运行kafka),我发现我的kafka pod没有被分配任何集群ip。通过移除线路 clusterIP: None 从services.yml,kubernetes为kafka pod分配一个内部ip。这解决了我的问题,领导不可用,也远程连接Kafka生产者/消费者。

nhaq1z21

nhaq1z215#

如果您在本地计算机上运行kafka,请尝试用以下行更新$kafka\u dir/config/server.properties: listeners=PLAINTEXT://localhost:9092 然后重启Kafka。

2w3rbyxf

2w3rbyxf6#

我用的是Kafka2.12-0.10.2.1: vi config/server.properties 添加以下行:

listeners=PLAINTEXT://localhost:9092

无需更改advanced.listeners,因为它从std listener属性获取值。
代理将向生产者和消费者公布主机名和端口。如果未设置,
如果已配置,它将使用“侦听器”的值
否则,它将使用 java.net.InetAddress.getCanonicalHostName() .
阻止Kafka经纪人:

bin/kafka-server-stop.sh

重新启动代理:

bin/kafka-server-start.sh -daemon config/server.properties

现在你不应该看到任何问题。

00jrzges

00jrzges7#

试试这个听众=plaintext://localhost:9092一定很有用
非常感谢

h43kikqp

h43kikqp8#

对我来说,我没有为kafka示例指定代理id。它在docker环境中重新启动时,有时会从zookeeper处获得一个新的id。如果代理id大于1000,只需指定环境变量 KAFKA_BROKER_ID .
使用它可以查看代理、主题和分区。

brew install kafkacat
kafkacat -b [kafka_ip]:[kafka_poot] -L
lx0bsm1f

lx0bsm1f9#

当leader\u not\u available错误抛出时,只需重新启动kafka代理:

/bin/kafka-server-stop.sh

然后

/bin/kafka-server-start.sh config/server.properties

(注意:zookeeper必须在此时运行,如果您以其他方式运行它将不起作用)

gzjq41n4

gzjq41n410#

对我来说,这是因为配置失误
码头码头(9093)
kafka命令端口“bin/kafka-console-producer.sh--代理列表localhost:9092 --topic “主题名”
我检查了配置以匹配端口,现在一切正常

vbopmzt1

vbopmzt111#

对我来说,原因是使用了一个特定的Zookeeper,这不是Kafka的一部分。这台zookeeper已经安装在机器上用于其他目的。显然,Kafka并不是和任何Zookeeper一起工作的。换成Kafka带来的Zookeeper帮我解决了这个问题。为了不与现有的zookeeper冲突,我必须修改配置,让zookeeper在不同的端口上侦听:

[root@host /opt/kafka/config]# grep 2182 *
server.properties:zookeeper.connect=localhost:2182
zookeeper.properties:clientPort=2182
tjrkku2a

tjrkku2a12#

当我们尝试订阅尚未创建的主题时,往往会收到此消息。我们通常依赖于在部署的环境中预先创建的主题,但是我们有针对停靠的kafka示例运行的组件测试,该示例每次启动时都是干净的。
在这种情况下,我们在测试设置中使用adminutils检查主题是否存在,如果不存在,则创建主题。有关设置管理员的更多信息,请参阅另一个堆栈溢出。

5cg8jx4n

5cg8jx4n13#

这可能与 advertised.host.name 设置在您的 server.properties .
可能发生的情况是,您的制作者试图找出谁是给定分区的负责人,并找出其原因 advertised.host.name 以及 advertised.port 试着联系。如果未正确配置这些设置,则可能认为引线不可用。

qq24tv8q

qq24tv8q14#

如果重复出现这样的错误消息:

Error while fetching metadata with correlation id 3991 : {your.topic=LEADER_NOT_AVAILABLE}

Discovered group coordinator 172.25.1.2:9092 (id: 2147483645 rack: null) (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:677)
(Re-)joining group (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:509)
Group coordinator 172.25.1.2:9092 (id: 2147483645 rack: null) is unavailable or invalid, will attempt rediscovery (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:729)
Discovered group coordinator 172.25.40.219:9092 (id: 2147483645 rack: null) (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:677)
Group coordinator 172.25.1.2:9092 (id: 2147483645 rack: null) is unavailable or invalid, will attempt rediscovery (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:729)

然后,您需要在kafka server.properties中配置如下侦听器设置:

listeners=PLAINTEXT://your.server.ip:9092

这是在apacke kafka 2.5.0和confluent platform 5.4.1上尝试的解决方案。

h5qlskok

h5qlskok15#

我知道这是张贴很久以前,我想分享我如何解决它。
因为我有我的办公室笔记本电脑(vpn和代理配置)。
我检查了环境变量no\u proxy

> echo %NO_PROXY%

它返回空值
现在我已经用localhost和127.0.0.1设置了no\u代理

> set NO_PROXY=127.0.0.1,localhost

如果要附加到现有值,则

> set NO_PROXY=%NO_PROXY%,127.0.0.1,localhost

在这之后,我重新启动了Zookeeper和Kafka
很有魅力

相关问题