繁体   English   中英

Kafka群集已从PLAINTEXT更新为SASL_PLAINTEXT,无法使Mirrormaker工作

[英]Kafka cluster updated from PLAINTEXT to SASL_PLAINTEXT, cannot get Mirrormaker to work

我们在两个数据中心中有两个单独的kafka集群,并已配置Mirrormaker来复制一组主题。 每个数据中心都通过kafka和mirrormaker运行3个节点。 此安装程序正在正确运行。

为了提高安全性,我们需要SASL_PLAINTEXT或更好的SASL_SSL。

我在所有三个节点上的一个数据中心中配置了SASL_PLAINTEXT:

在/ etc / sysconfig / kafka中添加:

Djava.security.auth.login.config=/etc/kafka/kafka_server.jaas"

创建了/etc/kafka/kafka_server.jaas:

KafkaServer {
 org.apache.kafka.common.security.plain.PlainLoginModule required
   username="admin"
   password="admin-secret"

};
KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret"
  ;
};

更改了/etc/kafka/server.properties中的侦听器:

listeners=PLAINTEXT://0.0.0.0:443,SASL_PLAINTEXT://0.0.0.0:29093,SASL_SSL://0.0.0.0:29094
advertised.listeners=PLAINTEXT://node1.app.gen.local:443,SASL_PLAINTEXT://node1.app.gen.local:29093,SASL_SSL://node1.app.gen.local:29094

添加到/etc/kafka/server.properties:

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
super.users=User:admin
zookeeper.set.acl=false

这些更改之后,已在第一个kafka节点上执行了成功的测试,以测试SASL端口,如下所示:

export KAFKA_OPTS="-Djava.security.auth.login.config=/etc/kafka/kafka_server.jaas"
/u01/app/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:29093 --topic topictest1 --from-beginning --consumer.config=/etc/kafka/consumer.properties

/etc/kafka/consumer.properties:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
bootstrap.servers=localhost:29093

/etc/kafka/producer.properties:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
bootstrap.servers=localhost:29093

因此,新创建的SASL端口上的使用者可以读取群集中尚未设置ACL的现有主题。 这也是预期的行为。

现在唯一的问题是,在新的安全群集和第二个非安全群集之间,mirrormaker损坏了。 试图通过对包含mirrormaker的使用者属性的文件进行以下更改来修复它:/etc/kafka/mirrormaker-consumer.properties

bootstrap.servers=node1.app.gen.local:29093,node2.app.gen.local:29093,node3.app.gen.local:29093 security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \\ username="admin" \\ password="admin-secret";

Mirrormaker启动,DEBUG日志中有很多条目,但是消息不会从受保护的群集复制到(仍然)不安全的群集。

我可能错过了什么?

谢谢,我根据您的建议解决了此问题,建议分别测试消费者和生产者。 看来我在其中定义了带有主题“ *”的ACL,这阻止了Mirrormaker的使用者从其PLAINTEXT端口读取主题。

我了解到的内容:如果将ACL放在主题上,则无法再从PLAINTEXT端口中读取它:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM