我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误
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
我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误
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
当前回答
我尝试了这里列出的所有建议。对我有用的是去服务器。属性和添加:
port = 9092
advertised.host.name = localhost
将监听器和advertised_listeners注释掉。
其他回答
当LEADER_NOT_AVAILABLE错误抛出时,只需重新启动kafka代理:
/bin/kafka-server-stop.sh
紧随其后的是
/bin/kafka-server-start.sh config/server.properties
(注意:Zookeeper必须在这个时候运行,否则它不会工作)
我知道这是很久以前发布的,我想分享我是如何解决它的。 因为我有我的办公室笔记本电脑(VPN和代理配置)。 我检查了环境变量NO_PROXY
> echo %NO_PROXY%
返回空值 现在我已经设置了NO_PROXY与localhost和127.0.0.1
> set NO_PROXY=127.0.0.1,localhost
如果您想追加现有值,则
> set NO_PROXY=%NO_PROXY%,127.0.0.1,localhost
在这之后,我重新启动了zookeeper和kafka 工作起来很有魅力
这是我在config/server中添加的。属性,这解决了我的问题类似上述问题。希望这有助于,它在服务器中有很好的文档。属性文件,在修改此文件之前,请尝试阅读和理解。 advertised.listeners =明文:/ / < your_kafka_server_ip >: 9092
我尝试了这里列出的所有建议。对我有用的是去服务器。属性和添加:
port = 9092
advertised.host.name = localhost
将监听器和advertised_listeners注释掉。
对于任何试图在kubernetes上运行kafka并遇到这个错误的人来说,这是最终为我解决的问题:
你必须:
将主机名添加到pod规范中,这样kafka就可以找到自己。
or
如果使用hostPort,则需要hostNetwork: true和dnsPolicy: ClusterFirstWithHostNet
这样做的原因是因为Kafka需要与自身对话,它决定使用“广告”侦听器/主机名来找到自己,而不是使用localhost。 即使您有一个将所广告的主机名指向pod的Service,它在pod中也不可见。我真的不知道为什么会这样,但至少有一个变通办法。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: zookeeper-cluster1
namespace: default
labels:
app: zookeeper-cluster1
spec:
replicas: 1
selector:
matchLabels:
app: zookeeper-cluster1
template:
metadata:
labels:
name: zookeeper-cluster1
app: zookeeper-cluster1
spec:
hostname: zookeeper-cluster1
containers:
- name: zookeeper-cluster1
image: wurstmeister/zookeeper:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 2181
- containerPort: 2888
- containerPort: 3888
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper-cluster1
namespace: default
labels:
app: zookeeper-cluster1
spec:
type: NodePort
selector:
app: zookeeper-cluster1
ports:
- name: zookeeper-cluster1
protocol: TCP
port: 2181
targetPort: 2181
- name: zookeeper-follower-cluster1
protocol: TCP
port: 2888
targetPort: 2888
- name: zookeeper-leader-cluster1
protocol: TCP
port: 3888
targetPort: 3888
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kafka-cluster
namespace: default
labels:
app: kafka-cluster
spec:
replicas: 1
selector:
matchLabels:
app: kafka-cluster
template:
metadata:
labels:
name: kafka-cluster
app: kafka-cluster
spec:
hostname: kafka-cluster
containers:
- name: kafka-cluster
image: wurstmeister/kafka:latest
imagePullPolicy: IfNotPresent
env:
- name: KAFKA_ADVERTISED_LISTENERS
value: PLAINTEXT://kafka-cluster:9092
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper-cluster1:2181
ports:
- containerPort: 9092
---
apiVersion: v1
kind: Service
metadata:
name: kafka-cluster
namespace: default
labels:
app: kafka-cluster
spec:
type: NodePort
selector:
app: kafka-cluster
ports:
- name: kafka-cluster
protocol: TCP
port: 9092
targetPort: 9092