2017-02-28 1 views
0

Ich habe zwei Kafka-Broker, Kafka-0 mit SSL und Kafka-1 mit PLAINTEXT (bereitgestellt mit Docker Images).Wie setze ich security.inter.broker.protocol, wenn ich zwei Kafka Broker mit verschiedenen Protokollen habe?

Ich muss security.inter.broker.protocol einstellen, damit kafka-0 und kafka-1 miteinander sprechen können. Als ich es KLARTEXT für beiden Makler eingestellt, kafka-0 gibt die folgenden Fehler:

java.lang.IllegalArgumentException: requirement failed: security.inter.broker.protocol must be a protocol in the configured set of advertised.listeners. The valid options based on currently configured protocols are Set(SSL) 

Den angekündigten Zuhörer für hafka-0 ist

advertised.listeners = SSL://IP_ADDRESS:9092 

Inzwischen, wenn ich das Protokoll SSL für beide gesetzt Makler, kafka-1 klagt:

Error when handling request {topics=[__consumer_offsets]} (kafka.server.KafkaApis) kafka.common.BrokerEndPointNotAvailableException: Broker `0` does not support security protocol `PLAINTEXT` 

Was muss ich im Setup ändern, so dass die Makler auch miteinander sprechen können, obwohl sie verschiedene Sicherheitsprotokolle verwenden?

Antwort

0

Die einzige Möglichkeit, dies zu erreichen, ist, wenn Sie einen der beiden Broker (oder beide) beide Protokolle sprechen lassen. Solange eines exklusiv für SSL und eines ausschließlich für Klartext konfiguriert ist, können sie sich nicht miteinander verbinden.

Was Sie tun können, ist ein Klartext Zuhörer an den ssl Broker hinzu:

listeners=PLAINTEXT://:9093,SSL://:9092 
advertised.listeners = PLAINTEXT://IP_ADDRESS:9093,SSL://IP_ADDRESS:9092 

und konfigurieren Sie die Nicht-SSL-Broker 9093 zu verbinden, die funktionieren sollte und hält alle Kunden, die derzeit ssl verwenden, um zu sprechen dieser Makler glücklich.

Da es wahrscheinlich einen Grund gibt, warum einer von ihnen nur SSL spricht, kann es sinnvoll sein, den Klartext-Port mit einer Firewall-Regel zu sichern, damit nur der zweite Broker eine Verbindung herstellen kann.

+0

Da ich die Bilder über Docker erstellen, muss ich auch die KAFKA_PORT-Variable festlegen. Weißt du, wie ich das schaffen kann, wenn der Broker zwei offene Ports haben muss? Alle Beispiele, die ich online finden kann, verwenden nur einen Port. Vielen Dank! – Lisa

+0

Ohne zu wissen, welches Docker-Image Sie verwenden, kann ich nur raten, aber wird es vielleicht verwendet, um zu definieren, welche Ports auf dem Container verfügbar gemacht werden sollen? Haben Sie versucht, den zweiten Port manuell freizugeben? –

+0

Es ist das Bild von Wurstmeister (https://github.com/wurstmeister/kafka-docker). Das Image muss über einen Ansible-Build-Prozess erstellt werden, sodass ich die Ports nicht manuell bereitstellen kann. Ich kann versuchen, einfach den Port zu den Ansible-Variablen "exposed_ports" und "publiced_ports" hinzuzufügen und zu sehen, ob das funktioniert. – Lisa

Verwandte Themen