kafka创建两个生产者和两个消费者,实现用户分权,centos7,怎么搞啊?已经安装好java和kafka了
4条回答 默认 最新
关注让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!
在Kafka中实现用户分权(即用户权限控制)通常涉及到Kafka的访问控制列表(ACL)和身份验证机制。以下是一个基本的步骤指南,帮助你在CentOS 7上实现Kafka的用户分权。
1. 配置Kafka的ACL和身份验证
Kafka支持多种身份验证机制,如SASL(Simple Authentication and Security Layer)和SSL/TLS。这里我们以SASL/PLAIN为例。
1.1 修改Kafka配置文件
首先,你需要修改Kafka的配置文件
server.properties来启用SASL/PLAIN身份验证。# 编辑Kafka配置文件 vim /path/to/kafka/config/server.properties在配置文件中添加以下内容:
# 启用SASL/PLAIN身份验证 listeners=SASL_PLAINTEXT://:9092 security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN # 启用ACL authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer super.users=User:admin1.2 创建JAAS配置文件
创建一个JAAS配置文件,用于定义用户和密码。
# 创建JAAS配置文件 vim /path/to/kafka/config/kafka_server_jaas.conf在文件中添加以下内容:
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_producer1="producer1-secret" user_producer2="producer2-secret" user_consumer1="consumer1-secret" user_consumer2="consumer2-secret"; };1.3 设置环境变量
在启动Kafka之前,设置
KAFKA_OPTS环境变量,指向JAAS配置文件。export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka/config/kafka_server_jaas.conf"2. 启动Kafka
启动Zookeeper和Kafka服务。
# 启动Zookeeper /path/to/kafka/bin/zookeeper-server-start.sh /path/to/kafka/config/zookeeper.properties & # 启动Kafka /path/to/kafka/bin/kafka-server-start.sh /path/to/kafka/config/server.properties &3. 创建Topic
创建一个Kafka Topic,用于测试。
/path/to/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 14. 配置生产者和消费者的ACL
为生产者和消费者配置ACL,确保它们只能访问特定的Topic。
4.1 配置生产者的ACL
为
producer1和producer2配置ACL,允许它们向test-topic发送消息。# 允许producer1向test-topic发送消息 /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:producer1 --operation Write --topic test-topic # 允许producer2向test-topic发送消息 /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:producer2 --operation Write --topic test-topic4.2 配置消费者的ACL
为
consumer1和consumer2配置ACL,允许它们从test-topic读取消息。# 允许consumer1从test-topic读取消息 /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:consumer1 --operation Read --topic test-topic # 允许consumer2从test-topic读取消息 /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:consumer2 --operation Read --topic test-topic5. 测试生产者和消费者
使用配置好的用户启动生产者和消费者,确保它们只能访问授权的Topic。
5.1 启动生产者
使用
producer1和producer2启动生产者。# 使用producer1启动生产者 /path/to/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic --producer.config /path/to/kafka/config/producer1.properties # 使用producer2启动生产者 /path/to/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic --producer.config /path/to/kafka/config/producer2.properties5.2 启动消费者
使用
consumer1和consumer2启动消费者。# 使用consumer1启动消费者 /path/to/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --consumer.config /path/to/kafka/config/consumer1.properties # 使用consumer2启动消费者 /path/to/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --consumer.config /path/to/kafka/config/consumer2.properties6. 验证权限
确保
producer1和producer2只能向test-topic发送消息,consumer1和consumer2只能从test-topic读取消息。7. 清理
测试完成后,可以删除ACL和Topic。
# 删除ACL /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:producer1 --operation Write --topic test-topic /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:producer2 --operation Write --topic test-topic /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:consumer1 --operation Read --topic test-topic /path/to/kafka/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:consumer2 --operation Read --topic test-topic # 删除Topic /path/to/kafka/bin/kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092通过以上步骤,你可以在Kafka中实现用户分权,确保不同的用户只能访问和操作特定的Topic。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报