Kafka und Firewall-Regeln

8

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?

    
George Smith 22.07.2016, 16:11
quelle

2 Antworten

2

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.

    
Duke Grouchy 13.02.2017 05:31
quelle
2

Kafka und Tierpfleger sind verschiedene Dinge. Wenn Sie beide auf demselben Computer ausführen, müssen Sie beide Ports öffnen.

kafka default ports:

  • 9092, kann in server.properties geändert werden;

zookeeper default ports:

  • 2181 für Clientverbindungen;
  • 2888 für Follower (andere Zookeeper-Knoten) Verbindungen;
  • 3888 für Verbindungen zwischen Knoten;

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.

    
Marcos Arruda 25.09.2017 23:20
quelle