Die Kafka PLAINTEXT-Sicherheit kann nicht zulassen, dass der Client über APIVERSION_QUERY eine Verbindung herstelltC#

Ein Treffpunkt für C#-Programmierer
Guest
 Die Kafka PLAINTEXT-Sicherheit kann nicht zulassen, dass der Client über APIVERSION_QUERY eine Verbindung herstellt

Post by Guest »

Ich beginne mit Kafka und bin auf einen Fehler gestoßen:
Ich habe einen Advertised_listener mit Klartext eingerichtet und möchte über den Confluent C#-Client eine Verbindung zu ihm herstellen, aber beim Versuch, eine Verbindung herzustellen, Ich erhalte die Fehlermeldung „falsche security.protocol-Konfiguration“, obwohl ich den Broker für die Verwendung von PLAINTEXT konfiguriert und in meinem Client eingestellt habe?
Meine Compose-Datei kann ausgeführt werden und Kafka funktioniert damit Konsole prod/con und ich haben den Client mit einem Redpanda-Kafka-Schnellstart-Setup getestet und konnten über den C#-Client senden und empfangen.
Mir ist bewusst, dass ich am Anfang stehe und dass es wahrscheinlich einen gibt Es gibt bereits viele Informationen, vielleicht sogar zu diesem speziellen Thema. Ich hoffe, Sie können vielleicht einen Kommentar mit einem Link dazu hinterlassen, damit ich mich damit befassen kann. Ich schätze Ihre Hilfe

Code: Select all

localhost:19092/bootstrap: Enter main broker thread
localhost:19092/bootstrap: Received CONNECT op
localhost:19092/bootstrap: Broker changed state INIT -> TRY_CONNECT
localhost:19092/bootstrap: broker in state TRY_CONNECT connecting
localhost:19092/bootstrap: Broker changed state TRY_CONNECT -> CONNECT
librdkafka v2.5.3 (0x20503ff) rdkafka#producer-1 initialized (builtin.features gzip,snappy,ssl,sasl,regex,lz4,sasl_gssapi,sasl_plain,sasl_scram,plugins,zstd,sasl_oauthbearer,http,oidc, SSL ZLIB SNAPPY ZSTD CURL SASL_SCRAM SASL_OAUTHBEARER PLUGINS HDRHISTOGRAM, debug 0x2)
localhost:19092/bootstrap: Connecting to ipv4#127.0.0.1:19092 (plaintext) with socket 1004
localhost:19092/bootstrap: Connected to ipv4#127.0.0.1:19092
localhost:19092/bootstrap: Connected (#1)
localhost:19092/bootstrap: Updated enabled protocol features +ApiVersion to ApiVersion
localhost:19092/bootstrap: Broker changed state CONNECT -> APIVERSION_QUERY
localhost:19092/bootstrap: Disconnected while requesting ApiVersion: might be caused by incorrect security.protocol configuration (connecting to a SSL listener?) or broker version is < 0.10 (see api.version.request) (after 1ms in state APIVERSION_QUERY) (_TRANSPORT)
localhost:19092/bootstrap: Disconnected while requesting ApiVersion: might be caused by incorrect security.protocol configuration (connecting to a SSL listener?) or broker version is < 0.10 (see api.version.request) (after 1ms in state APIVERSION_QUERY)
localhost:19092/bootstrap: Updated enabled protocol features -ApiVersion to
localhost:19092/bootstrap: Broker changed state APIVERSION_QUERY -> DOWN
localhost:19092/bootstrap]: 1/1 brokers are down
Versionen:
kafka 3.8.0
Confluent.Kafka 2.5.3
Docker-Version 27.2.1-rd, Erstellen Sie cc0ee3e
C#-Code:

Code: Select all

    public static async Task Main(string[] args){
string role = args[0];
string topic = args[1];
string hostname = args[2];
string port = args[3];
switch (role) {
case "producer": await Producer(topic,hostname,port); break;
case "consumer": Consumer(topic,hostname,port);break;
default: Console.WriteLine("Usage: \"producer\" or \"consumer\"");break;
}
}
public static async Task Producer(string topic,string hostname, string port){
var config = new ProducerConfig{
BootstrapServers = hostname+":"+port,
SecurityProtocol = SecurityProtocol.Plaintext,
BrokerAddressFamily = BrokerAddressFamily.V4,
Debug ="broker",
ApiVersionRequest = false,
};
using (var p = new ProducerBuilder(config).Build()){
try{
string msg = "Hello World";
var dr = await p.ProduceAsync(topic,new Message
{Value = msg}
);
Console.WriteLine($"Send: '{dr.Value}' to '{dr.TopicPartitionOffset}' ");

}catch(ProduceExceptione){
Console.WriteLine($"Error: {e.Error.Reason}");
}
}
Docker Compose:

Code: Select all

services:

broker:
image: apache/kafka:latest
container_name: broker
hostname: broker
networks:
- kafka-nw
ports:
- 9092:9092
- 19092:19092
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
#KAFKA_LISTENERS: PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,HOST://localhost:19092,CONTROLLER://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:19093,HOST://localhost:19092
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,HOST:PLAINTEXT
#KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,HOST:SASL_PLAINTEXT
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_NUM_PARTITIONS: 3
networks:
kafka-nw:
Ich habe die Ports geändert und andere Hostnamen verwendet und versuche jetzt, es auf sasl_plaintext umzustellen, in der Hoffnung, dass es jetzt funktioniert.
EDIT 04.11.2024:
Gelöst! Mein Setup: Firmen-Laptop -> Windows -> Docker -> WSL -> Kafka
Wie sich herausstellte, hat Windows die erforderlichen Kafka-Ports nicht in meinem Docker Compose registriert, weil ... Nach einem kurzen Neustart und der Verwendung von Netstat-Befehlen und dergleichen funktionierte es. (Hier wurde nichts geändert.)
Kann als geschlossen betrachtet werden, da der zugrunde liegende Code und das Docker-Compose korrekt waren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post