单机上部署kafka3.5,并配置sasl认证
概述
今天我要跟大家分享一下如何在单机上部署kafka3.5,并配置sasl认证(plaintext模式)。kafka是一个分布式的消息队列,可以用来处理大量的数据流。sasl是一种安全认证机制,可以保证kafka的通信安全。下面我会分几个步骤来介绍这个过程。
第一步,安装kafka
下载并解压kafka3.5的安装包。你可以从官网或者其他镜像站点下载kafka的压缩文件,然后解压到你想要的目录。例如,我把它解压到了/home/kafka目录。
第二步,修改kafka的配置文件
你需要修改两个文件,一个是server.properties,另一个是kafka_server_jaas.conf。server.properties是kafka的主要配置文件,里面有很多参数可以调整。kafka_server_jaas.conf是sasl认证的配置文件,里面定义了认证的方式和用户信息。这两个文件都在kafka的config目录下。
在server.properties中,你需要修改以下几个参数:
broker.id:这是kafka的唯一标识,每个broker都需要有一个不同的id。因为我们只有一个broker,所以可以设置为0。
listeners:这是kafka的监听地址和端口,可以有多个。我们需要添加一个sasl_plaintext类型的监听器,表示使用sasl和明文传输。例如,我们可以设置为listeners=PLAINTEXT://:9092,SASL_PLAINTEXT://:9093。
advertised.listeners:这是kafka对外公布的监听地址和端口,客户端会根据这个来连接kafka。我们需要和listeners保持一致,例如advertised.listeners=PLAINTEXT://:9092,SASL_PLAINTEXT://:9093。
zookeeper.connect:这是kafka连接zookeeper的地址和端口,zookeeper是一个分布式协调服务,用来管理kafka的元数据。因为我们只有一个zookeeper,所以可以设置为localhost:2181。
sasl.enabled.mechanisms:这是kafka启用的sasl认证方式,可以有多个。我们使用最简单的PLAIN方式,所以设置为sasl.enabled.mechanisms=PLAIN。
sasl.mechanism.inter.broker.protocol:这是kafka之间通信使用的sasl认证方式,必须是sasl.enabled.mechanisms中的一个。我们也设置为PLAIN。
authorizer.class.name:这是kafka使用的授权类,用来控制客户端对主题和消费组的访问权限。我们使用默认的SimpleAclAuthorizer,所以设置为authorizer.class.name=kafka.security.authorizer.AclAuthorizer。
super.users:这是kafka的超级用户列表,他们可以访问所有的主题和消费组,不受授权限制。我们可以设置为自己的用户名,例如super.users=User:admin。
在kafka_server_jaas.conf中,你需要添加以下内容:
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username=“admin” password=“admin” user_admin=“admin” user_alice=“alice”; };
这里我们定义了一个KafkaServer段,表示kafka服务器端使用的认证模块。我们使用PlainLoginModule,并指定了用户名和密码。我们还定义了两个用户,admin和alice,并分别给他们设置了密码。
第三步,启动zookeeper和kafka
你需要先启动zookeeper,然后启动kafka。你可以使用kafka自带的脚本来启动它们。例如,在/home/kafka目录下执行以下命令:
bin/zookeeper-server-start.sh config/zookeeper.properties & bin/kafka-server-start.sh config/server.properties &
第四步,测试kafka的功能和安全性
# 创建一个名为test的主题,有一个分区和一个副本 bin/kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092 # 查看主题的信息 bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092 # 生产一些消息到test主题,使用sasl_plaintext协议和admin用户 bin/kafka-console-producer.sh --topic test --broker-list localhost:9093 --producer.config config/producer.properties # 消费test主题的消息,使用sasl_plaintext协议和alice用户 bin/kafka-console-consumer.sh --topic test --bootstrap-server localhost:9093 --consumer.config config/consumer.properties # 查看test主题的授权信息 bin/kafka-acls.sh --describe --topic test --bootstrap-server localhost:9092
在config目录下,你需要创建两个文件,producer.properties和consumer.properties,分别用来配置生产者和消费者的认证信息。例如,producer.properties的内容如下:
sasl.mechanism=PLAIN security.protocol=SASL_PLAINTEXT sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="admin" \ password="admin";
consumer.properties的内容如下:
sasl.mechanism=PLAIN security.protocol=SASL_PLAINTEXT sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="alice" \ password="alice";