CentOS7安装Kafka3.4.0集群并启用SASL

1. CentOS7安装Kafka集群并启用SASL

1.1. 准备工作

  • 准备3台服务器

ip分别为192.168.56.151,192.168.56.152,192.168.56.153

  • 安装java 11

KIP-750: Drop support for Java 8 in Kafka 4.0 (deprecate in 3.0)

Kafka从3.0版本开始废弃Java 8,因此本文采用Java 11.

1.2. 安装kafka

Kafka目前支持ZooKeeper和KRaft两个模式,本文使用的ZooKeeper模式。

Kafka安装包自带了一个ZooKeeper,因此无需下载ZooKeeper的安装包。

1.2.1. 解压Kafka

分别在3台服务器上执行操作:

tar -xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0
# 创建文件夹保存数据
mkdir -p zookeeper/data
mkdir kafka-logs

1.2.2. 修改配置

分别在3台服务器上修改配置:

  • 修改ZooKeeper配置

修改config文件夹下的zookeeper.properties,本文修改配置项如下:

# the directory where the snapshot is stored.
dataDir=/home/sun/kafka_2.13-3.4.0/zookeeper/data

# the port at which the clients will connect
clientPort=2181

# maxClientCnxns=0

# 设置连接参数,添加如下配置
# 为zk的基本时间单元,毫秒
tickTime=2000
# Leader-Follower初始通信时限 tickTime*10
initLimit=10
# Leader-Follower同步通信时限 tickTime*5
syncLimit=5

# 设置集群地址
server.1=192.168.56.151:2888:3888
server.2=192.168.56.152:2888:3888
server.3=192.168.56.153:2888:3888
  • 创建myid文件

zookeeper需要myid文件,用于指明自己的ID,这里ID应与zookeeper.properties中集群地址一致。

分别登陆3台服务器,执行以下操作

cd /home/sun/kafka_2.13-3.4.0/zookeeper/data
# 这里151服务器为1,152服务器为2,153服务器为3,和zookeeper.properties的地址保持一致
echo 1 > myid
  • 修改Kafka配置

修改config文件夹下的server.properties,kafka的配置项有很多,本文修改配置项如下:

Note:broker.id是唯一的,不能重复,151服务器的为1,152服务器的为2,153服务器应为3

listeners的值应为对应服务器的ip.

broker.id=1

listeners=SASL_PLAINTEXT://192.168.56.151:9092

log.dirs=/home/sun/kafka_2.13-3.4.0/kafka-logs

zookeeper.connect=192.168.56.151:2181,192.168.56.152:2181,192.168.56.153:2181

# SASL
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

# acl 
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=true
super.users=User:admin

# disable auto creation of topic on the server
auto.create.topics.enable=false
  • 创建JAAS文件

Kafka uses the Java Authentication and Authorization Service (JAAS) for SASL configuration.

Kafka使用JAAS来实现认证,因此需要在每个broker的config文件夹下创建jaas文件。

config文件夹新建文件kafka_server_jaas.conf,内容如下:

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="think-kafka123"
    user_admin="think-kafka123"
    user_writer="writer2023";
};

配置文件创建了两个用户,分别是admin和writer,等号后为对应的密码。

1.3. 启动程序

  • 启动ZooKeeper

分别登陆三台服务器启动ZooKeeper

# 后台模式启动zookeeper
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
# 查看进程,org.apache.zookeeper.server.quorum.QuorumPeerMain
jps -l
# 日志文件位于logs/zookeeper.out
tail logs/zookeeper.out
  • 启动kafka

分别登陆三台服务器,执行以下命令:

因为集成了SASL,因此在启动时需要指定认证文件,因此可以创建一个脚本启动kafka,以下是启动脚本内容:

#!/bin/bash
export KAFKA_OPTS="-Djava.security.auth.login.config=/home/sun/kafka_2.13-3.4.0/config/kafka_server_jaas.conf"
bin/kafka-server-start.sh -daemon config/server.properties

可以通过以下命令查看是否启动成功:

# 查看进程,kafka.Kafka
jps -l
# 日志文件位于logs文件夹
tail logs/server.log

1.4. 测试Kafka集群

测试集群只需要在一台机器上操作即可,以下操作是在151服务器执行的。

因为Kafka服务端开启了安全认证,因此客户端也要加入安全认证,才可以连接服务端。

  • 创建jaas文件和配置文件

config文件夹新建文件kafka_client_jaas.conf,内容如下:

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

config文件夹新建文件sasl.conf,用来认证,内容如下:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
  • 创建topic
# 设置环境变量指定jaas文件
export KAFKA_OPTS="-Djava.security.auth.login.config=/home/sun/kafka_2.13-3.4.0/config/kafka_client_jaas.conf"
# 创建topic
bin/kafka-topics.sh --create --topic demo-topic --bootstrap-server 192.168.56.151:9092 --command-config config/sasl.conf
# 罗列目前的topic
bin/kafka-topics.sh --bootstrap-server 192.168.56.151:9092 --command-config config/sasl.conf --list
  • 往topic写消息,可以使用Ctrl-C取消
# 设置环境变量指定jaas文件
export KAFKA_OPTS="-Djava.security.auth.login.config=/home/sun/kafka_2.13-3.4.0/config/kafka_client_jaas.conf"
bin/kafka-console-producer.sh --topic demo-topic --bootstrap-server 192.168.56.151:9092 --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN
  • 消费topic消息

另开一个终端会话消费消息,使用Ctrl-C取消

# 设置环境变量指定jaas文件
export KAFKA_OPTS="-Djava.security.auth.login.config=/home/sun/kafka_2.13-3.4.0/config/kafka_client_jaas.conf"
bin/kafka-console-consumer.sh --topic demo-topic --from-beginning --bootstrap-server 192.168.56.151:9092 --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN

1.5. 参考资料

  1. 利用kafka自带的zookeeper搭建kafka集群
  2. 启用并测试 Kafka 的 SASL + ACL 认证授权
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值