J'essaye d'utiliser Kafka.
Toutes les configurations sont effectuées correctement mais lorsque j'essaie de produire un message à partir de la console, je continue à recevoir l'erreur suivante
WARN Error while fetching metadata with correlation id 39 :
{4-3-16-topic1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
Version Kafka: 2.11-0.9.0.0
apache-kafka
producer
Vishesh
la source
la source
2.2.0
en 2019Réponses:
Cela pourrait être lié à la
advertised.host.name
configuration de votreserver.properties
.Ce qui pourrait arriver, c'est que votre producteur essaie de savoir qui est le leader pour une partition donnée, comprend son
advertised.host.name
etadvertised.port
et essaie de se connecter. Si ces paramètres ne sont pas configurés correctement, il peut alors penser que le leader n'est pas disponible.la source
J'ai essayé toutes les recommandations énumérées ici. Ce qui a fonctionné pour moi était d'aller
server.properties
et d'ajouter:Laissez
listeners
etadvertised_listeners
commenté.la source
server.properties
fichier MAC se trouve à/usr/local/etc/kafka/
advertised.listeners=PLAINTEXT://my.ip:9092
port
,advertised.host.name
sont des configurations obsolètes. kafka.apache.org/documentation/#brokerconfigsCe qui a résolu le problème pour moi, c'est de définir les auditeurs comme ceci:
Cela permet au courtier KAFKA d'écouter toutes les interfaces.
la source
J'avais kafka fonctionnant comme un conteneur Docker et des messages similaires inondaient le journal.
Et
KAFKA_ADVERTISED_HOST_NAME
était réglé sur «kafka».Dans mon cas, la raison de l'erreur était l'
/etc/hosts
enregistrement manquant pour «kafka» dans le conteneur «kafka» lui-même.Ainsi, par exemple, l'exécution
ping kafka
à l' intérieur du conteneur 'kafka' échouerait avecping: bad address 'kafka'
En termes de Docker, ce problème est résolu en spécifiant
hostname
le conteneur.Options pour y parvenir:
docker run --hostname ...
docker run -it --add-host ...
hostname
dans docker-composehostname
dans la définition de tâche AWS EC2la source
J'utilise kafka_2.12-0.10.2.1:
vi config/server.properties
ajouter ci-dessous la ligne:
Nom d'hôte et port que le courtier annoncera aux producteurs et aux consommateurs. Si non défini,
Sinon, il utilisera la valeur renvoyée par
java.net.InetAddress.getCanonicalHostName()
.arrêtez le courtier Kafka:
redémarrer le courtier:
et maintenant vous ne devriez voir aucun problème.
la source
server.properties
n'était pas suffisante jusqu'à ce que je redémarre le courtier avec un démon rechargé. Vous êtes peut-être censé le savoir, mais cela a certainement aidé à le préciser dans cette réponsekafka 2.13
J'ai été témoin de ce même problème au cours des 2 dernières semaines en travaillant avec Kafka et j'ai lu ce post de Stackoverflow depuis.
Le résultat dans mon cas est que Kafka renvoie un message d'erreur mais crée, en même temps, le sujet qui n'existait pas auparavant. Donc, si j'essaie de produire à nouveau un message sur ce sujet après cet événement, l'erreur n'apparaîtra plus comme le sujet tel qu'il a été créé.
VEUILLEZ NOTER: Il se peut que mon installation particulière de Kafka ait été configurée pour créer automatiquement le sujet lorsque celui-ci n'existe pas; cela devrait expliquer pourquoi, dans mon cas, je ne peux voir le problème qu'une seule fois pour chaque sujet après la réinitialisation des sujets: votre configuration peut être différente et dans ce cas, vous continuerez à recevoir la même erreur encore et encore.
Cordialement,
Luca Tampellini
la source
Nous avons tendance à recevoir ce message lorsque nous essayons de nous abonner à un sujet qui n'a pas encore été créé. Nous nous appuyons généralement sur des sujets à créer a priori dans nos environnements déployés, mais nous avons des tests de composants qui s'exécutent sur une instance kafka dockerisée, qui commence à nettoyer à chaque fois.
Dans ce cas, nous utilisons AdminUtils dans notre configuration de test pour vérifier si le sujet existe et le créer sinon. Voir cet autre débordement de pile pour en savoir plus sur la configuration d'AdminUtils.
la source
Une autre possibilité pour cet avertissement (en 0.10.2.1) est que vous essayez de sonder sur un sujet qui vient d'être créé et que le leader de cette partition-sujet n'est pas encore disponible, vous êtes au milieu d'une élection à la direction.
Attendre une seconde entre la création du sujet et l'interrogation est une solution de contournement.
la source
Pour quiconque essaie d'exécuter kafka sur kubernetes et rencontre cette erreur, c'est ce qui l'a finalement résolu pour moi:
Vous devez soit:
hostname
à la spécification du pod, de cette façon kafka peut se trouver.ou
hostPort
, vous avez besoinhostNetwork: true
etdnsPolicy: ClusterFirstWithHostNet
La raison en est que Kafka a besoin de se parler et décide d'utiliser le listener / hostname 'annoncé' pour se trouver, plutôt que d'utiliser localhost. Même si vous disposez d'un service qui pointe le nom d'hôte annoncé vers le pod, il n'est pas visible depuis le pod. Je ne sais pas vraiment pourquoi c'est le cas, mais au moins il existe une solution de contournement.
la source
Ajouter ceci car cela peut aider les autres. Un problème courant peut être une mauvaise configuration de
advertised.host.name
. Avec Docker utilisant le paramètre docker-compose, le nom du service à l'intérieurKAFKA_ADVERTISED_HOST_NAME
ne fonctionnera pas à moins que vous ne définissiez également le nom d'hôte.docker-compose.yml
exemple:Ce qui précède sans
hostname: kafka
peut générer un problèmeLEADER_NOT_AVAILABLE
lors de la tentative de connexion. Vous pouvez trouver un exemple dedocker-compose
configuration de travail icila source
Dans mon cas, cela fonctionnait bien à la maison, mais cela échouait au bureau, au moment où je me connectais au réseau de bureau.
Donc modifié le config / server.properties listeners = PLAINTEXT: //: 9092 to listeners = PLAINTEXT: // localhost: 9092
Dans mon cas, j'obtenais en décrivant le groupe de consommateurs
la source
Si vous exécutez kafka sur une machine locale, essayez de mettre à jour $ KAFKA_DIR / config / server.properties avec la ligne ci-dessous:
listeners=PLAINTEXT://localhost:9092
puis redémarrez kafka.la source
J'utilise docker-compose pour créer le conteneur Kafka en utilisant l'
wurstmeister/kafka
image. L'ajout d'uneKAFKA_ADVERTISED_PORT: 9092
propriété à mondocker-compose
fichier a résolu cette erreur pour moi.la source
Puisque je voulais que mon courtier kafka se connecte avec des producteurs et des consommateurs à distance, je ne veux donc
advertised.listener
pas être commenté. Dans mon cas, (exécutant kafka sur kubernetes), j'ai découvert que mon pod kafka n'avait pas d'IP de cluster. En supprimant la ligneclusterIP: None
de services.yml, le kubernetes attribue une ip interne au pod kafka. Cela a résolu mon problème de LEADER_NOT_AVAILABLE et également la connexion à distance des producteurs / consommateurs de kafka.la source
Lorsque l'erreur LEADER_NOT_AVAILABLE se produit, redémarrez simplement le courtier kafka:
suivi par
(Remarque: Zookeeper doit être en cours d'exécution à cette heure, si vous faites autrement, cela ne fonctionnera pas)
la source
New leader is 0
.Cette ligne ci-dessous que j'ai ajoutée a
config/server.properties
résolu mon problème similaire au problème ci-dessus. J'espère que cela aide, c'est assez bien documenté dans le fichier server.properties, essayez de lire et de comprendre avant de modifier cela.advertised.listeners=PLAINTEXT://<your_kafka_server_ip>:9092
la source
Pour tous ceux qui luttent avec la configuration de Kafka ssl et voient cette erreur LEADER_NOT_AVAILABLE. L'une des raisons qui pourraient être brisées est le keystore et le truststore. Dans le keystore, vous devez avoir la clé privée du serveur + le certificat de serveur signé. Dans le magasin de clés de confiance client, vous devez disposer d'un certificat CA intermédiaire afin que le client puisse authentifier le serveur kafka. Si vous souhaitez utiliser ssl pour la communication entre courtiers, vous devez également définir ce truststore dans le server.properties des courtiers afin qu'ils puissent s'authentifier mutuellement.
Cette dernière pièce que j'ai manquée par erreur m'a causé beaucoup d'heures douloureuses pour découvrir ce que pouvait signifier cette erreur LEADER_NOT_AVAILABLE. J'espère que cela peut aider quelqu'un.
la source
Le problème est résolu après l'ajout du paramètre d'écoute dans le fichier server.properties situé dans le répertoire config. listeners = PLAINTEXT: // localhost (ou votre serveur): 9092 Redémarrez kafka après ce changement. Version utilisée 2.11
la source
Pour moi, cela était dû à une configuration manquante du
port Docker (9093)
Port de commande Kafka "bin / kafka-console-producer.sh --broker-list localhost: 9092 --topic TopicName"
J'ai vérifié ma configuration pour correspondre au port et maintenant tout va bien
la source
Pour moi, la cause était l'utilisation d'un gardien de zoo spécifique qui ne faisait pas partie du package Kafka. Ce Zookeeper était déjà installé sur la machine à d'autres fins. Apparemment, Kafka ne fonctionne pas avec n'importe quel gardien de zoo. Le passage au gardien de zoo fourni avec Kafka a résolu le problème pour moi. Pour ne pas entrer en conflit avec le Zookeeper existant, j'ai dû modifier ma configuration pour que le Zookeeper écoute sur un port différent:
la source
Les auditeurs annoncés comme mentionnés dans les réponses ci-dessus pourraient en être une des raisons. Les autres raisons possibles sont:
bin/kafka-topics --list --zookeeper <zookeeper_ip>:<zookeeper_port>
Assurez-vous également que l'auditeur annoncé est défini sur au
IP:9092
lieu delocalhost:9092
. Ce dernier signifie que le courtier est accessible uniquement via l'hôte local.Quand j'ai rencontré l'erreur, je me souviens de l'avoir utilisé
PLAINTEXT://<ip>:<PORT>
dans la liste des serveurs bootstrap (ou la liste des courtiers) et cela a fonctionné, étrangement.la source
Pour moi, je n'ai pas spécifié d'ID de courtier pour l'instance Kafka. Il obtiendra parfois un nouvel identifiant de zookeeper lorsqu'il redémarrera dans l'environnement Docker. Si votre ID de courtier est supérieur à 1 000, spécifiez simplement la variable d'environnement
KAFKA_BROKER_ID
.Utilisez ceci pour voir les courtiers, les sujets et les partitions.
la source
Je sais que cela a été posté il y a longtemps, je voudrais partager comment je l'ai résolu.
depuis que j'ai mon ordinateur portable de bureau ( VPN et proxy a été configuré).
j'ai vérifié la variable d'environnement NO_PROXY
il est retourné avec des valeurs vides
maintenant j'ai défini le NO_PROXY avec localhost et 127.0.0.1
si vous souhaitez ajouter aux valeurs existantes, alors
après cela, j'ai redémarré le gardien de zoo et kafka a
fonctionné comme un charme
la source