Wir haben eine ziemlich strenge Netzwerksegmentierungspolitik. Ich verwende eine Cloud Foundry-Instanz, um eine App zu implementieren. Die Firewall-Regeln wurden so eingerichtet, dass sie den Kafka-Cluster innerhalb der Cloud-Foundry-Instanz erreichen. Ich glaube, dass die Firewall-Regeln auch eingerichtet wurden, um an die Instanz des Tierpflegers zu gelangen. Ich muss das wirklich bestätigen.
Mein Problem scheint zu sein, dass ich Nachrichten an Kafka senden kann, aber mein Konsument scheint sie nicht abzuholen. Es scheint zu hängen, während "polling".
Gibt es einige versteckte Hosts oder Ports, die ich für meine Firewall-Regeln verwenden muss, die nicht nur die Standard-Hosts und Ports für die Knoten kafka und zookeeper sind?
TL; DR : Es gibt keinen versteckten Port. Überprüfen Sie Ihre Broker-Konfiguration. Stellen Sie sicher, dass IP / PORT für Kafka-Kunden erreichbar ist.
Ich bin auf diese Frage gestoßen, nachdem ich das gleiche Problem mit Kafka 0.10.1.1 mit der kafka-python-Bibliothek als Konsument hatte.
Nein. Ich habe den Netzwerkverkehr erfasst und nutzt keinen anderen Port, um mit Kafka zu kommunizieren. Wenn die Broker für die Verwendung von 9092 konfiguriert sind, ist dies der einzige von den Konsumenten verwendete Port.
Aber nach weiteren Untersuchungen waren Broker-Konfigurationen in meinem Fall schuld.
kafka.advertised.listeners = PLAINTEXT: // [private_ip]: 9092, SSL: // [public_ip]: 9093 kafka.listeners = PLAINTEXT: / 0.0.0.0: 9092, SSL: / 0.0.0.0: 9093
Ich habe [public_ip]: 9092 als Bootstrap-Server verwendet, weil ich keine PKI eingerichtet hatte, aber ich wollte meinen Verbraucher aus dem öffentlichen Internet testen.
Der Benutzer konnte eine Verbindung zum Broker herstellen, konnte jedoch keine Nachricht abrufen.
Da der Verbraucher über PLAINTEXT mit Kafka verbunden ist, hat Kafka PLAINTEXT Broker-Adressen anstelle von SSL-Adressen angekündigt. Der Verbraucher versuchte dann, die Kafka-Broker mit privaten IP-Adressen anstatt mit öffentlichen IP-Adressen zu erreichen. (Wie durch die rohe Netzwerkerfassung gezeigt)
Nachdem die PKI aktiviert und in Brokern & amp; Kunden, konnte ich Nachrichten aus dem öffentlichen Internet gut ziehen.
Kafka und Tierpfleger sind verschiedene Dinge. Wenn Sie beide auf demselben Computer ausführen, müssen Sie beide Ports öffnen.
kafka default ports:
zookeeper default ports:
Das ist es.
Kafka hat auch die Listener und die beworbenen.listener Eigenschaften, die bei den ersten Nutzern für Verwirrung sorgen. Um es einfach zu machen, listener ist die Netzwerkschnittstelle, die Ihr Server bindet, und beworben.listeners ist der Hostname oder die IP-Adresse Ihres Servers, der sich beim Zoowächter registriert und Anfragen annimmt. Wenn Sie einen Hostnamen angeben, müssen Ihre Clients den Hostnamen verwenden, um eine Verbindung herzustellen. Die URL advertised.listeners ist diejenige, die Ihre Kunden verwenden werden, um die Verbindung zu starten. Sobald die Verbindung hergestellt ist, erhält Ihr Client eine Verbindung zum Tierpfleger, um die URLs anderer Broker zu erhalten. Dein Produzent arbeitet deswegen nicht.
Damit es funktioniert, müssen Sie auch 2888 auf Ihrer Firewall öffnen, nicht nur 2181. Und @Jaya Ananthram ist falsch, wenn er Ihnen sagt, dass Kafka 2181 Port benötigt. Es ist ein Tierpfleger-Port. Die Verbraucher auf Kafka 0.10 Stills müssen Zoowärter kontaktieren, um einige Dinge zu bestehen, das ist es.
Kafka 0.11.0.0 hat das geändert und sorgt dafür, dass Clients keinen Tierpfleger brauchen.
Tags und Links apache-kafka kafka-consumer-api