[英]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.