为什么 Debezium 连接器无法连接到 SASL 激活的代理?
Why Debezium Connector can't connect to a SASL activated broker?
我正在尝试为我的 Kafka 系统启用 SASL/PLAIN。它实际上有效,我已经为 Schema Registry 和 Java 生产者测试了它。问题是 Kafka Connect 在启用 SASL 时无法建立连接(至少我一开始是这么想的)。我提供了必要的配置,但看起来它根本没有影响。我已将 connect-avro-distributed.properties
文件编辑为:
sasl.mechanism=PLAIN
security.protocol=SASL_PLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="secret";
producer.sasl.mechanism=PLAIN
producer.security.protocol=SASL_PLAINTEXT
producer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="secret";
consumer.sasl.mechanism=PLAIN
consumer.security.protocol=SASL_PLAINTEXT
consumer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="secret";
但是在日志中它说:
[2022-01-07 12:21:28,645] INFO ProducerConfig values:
sasl.mechanism = GSSAPI
security.protocol = PLAINTEXT
应该是这样的:
[2022-01-07 12:21:28,645] INFO ProducerConfig values:
sasl.mechanism = PLAIN
security.protocol = SASL_PLAINTEXT
消费者配置相同。我需要做什么?为什么要使用默认值?我已经多次重新启动该服务。提前致谢。
编辑:还有另一个连接器运行没有任何问题,它具有正确的 SASL 配置。
Edit2:看起来 Debezium 连接器需要在连接器端进行更多配置。
尝试使用不同的连接器清楚地表明存在 Debezium 特定问题。由于 Debezium 使用历史主题,因此在启用安全性时需要一些额外的配置。
"database.history.consumer.security.protocol": "SASL_PLAINTEXT",
"database.history.consumer.sasl.mechanism": "PLAIN",
"database.history.consumer.sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"secret\";",
"database.history.producer.security.protocol": "SASL_PLAINTEXT",
"database.history.producer.sasl.mechanism": "PLAIN",
"database.history.producer.sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"secret\";"
您需要覆盖 Debezium 连接器的生产者和消费者配置的默认值。如果您使用 SSL,则需要添加几行。更多信息:https://docs.confluent.io/debezium-connect-sqlserver-source/current/sqlserver_source_connector_config.html
我正在尝试为我的 Kafka 系统启用 SASL/PLAIN。它实际上有效,我已经为 Schema Registry 和 Java 生产者测试了它。问题是 Kafka Connect 在启用 SASL 时无法建立连接(至少我一开始是这么想的)。我提供了必要的配置,但看起来它根本没有影响。我已将 connect-avro-distributed.properties
文件编辑为:
sasl.mechanism=PLAIN
security.protocol=SASL_PLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="secret";
producer.sasl.mechanism=PLAIN
producer.security.protocol=SASL_PLAINTEXT
producer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="secret";
consumer.sasl.mechanism=PLAIN
consumer.security.protocol=SASL_PLAINTEXT
consumer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="secret";
但是在日志中它说:
[2022-01-07 12:21:28,645] INFO ProducerConfig values:
sasl.mechanism = GSSAPI
security.protocol = PLAINTEXT
应该是这样的:
[2022-01-07 12:21:28,645] INFO ProducerConfig values:
sasl.mechanism = PLAIN
security.protocol = SASL_PLAINTEXT
消费者配置相同。我需要做什么?为什么要使用默认值?我已经多次重新启动该服务。提前致谢。
编辑:还有另一个连接器运行没有任何问题,它具有正确的 SASL 配置。
Edit2:看起来 Debezium 连接器需要在连接器端进行更多配置。
尝试使用不同的连接器清楚地表明存在 Debezium 特定问题。由于 Debezium 使用历史主题,因此在启用安全性时需要一些额外的配置。
"database.history.consumer.security.protocol": "SASL_PLAINTEXT",
"database.history.consumer.sasl.mechanism": "PLAIN",
"database.history.consumer.sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"secret\";",
"database.history.producer.security.protocol": "SASL_PLAINTEXT",
"database.history.producer.sasl.mechanism": "PLAIN",
"database.history.producer.sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"secret\";"
您需要覆盖 Debezium 连接器的生产者和消费者配置的默认值。如果您使用 SSL,则需要添加几行。更多信息:https://docs.confluent.io/debezium-connect-sqlserver-source/current/sqlserver_source_connector_config.html