kafka3.6.1集群认证搭建-非Docker版

搭建kafka集群认证

说明

本文是在CentOS系统使用,其他操作系统可能会有一些不适用。

一. 环境依赖

1.1Java环境依赖

下载

进去下载页面下载https://www.oracle.com/java/technologies/javase-downloads.html

名字类似:jdk-8u421-linux-x64.tar.gz,名字里有 linux-x64.tar.gz,上传到服务器,解压即可

如果没有账号,那就自行从国内镜像站下载 Oracle JDK

配置环境变量

1
2
3
4
5
6
7
8
$ vim ~/.bash_profile

export JAVA_HOME=$HOME/jdk1.8.0_333
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH

生效环境变量

1
$ source ~/.bash_profile

验证

1
$ which java

显示是你安装配置的JDK路径就代表正确配置了。

1.2 zookeeper环境依赖

需要有zookeeper环境,可以参考《CentOS7安装部署最新Zookeeper3.8.0集群》文章说明。

需要补充的是里面的节点IP根据实际修改。

二.部署图

部署图

三. zk 配置认证

最开始搭建的zookeeper是没有认证的功能,那么我们需要增加配置

  • 每个节点新增加认证文件conf/zookeeper_jaas.conf
1
2
3
4
5
6
$ cat conf/zookeeper_jaas.conf 
Server {
  org.apache.zookeeper.server.auth.DigestLoginModule required
  user_super="kafka@202401"
  user_zkkafka="zkkafka@202401";
};

其中user_后面代表的是用户名,比如 zkkafka就是用户名,密码是zkkafka@202401

  • 每个节点conf/zoo.cfg 增加认证配置项
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
  • 增加环境变量,重启 zk

下面启动脚本:

1
2
3
$ export JVMFLAGS="-Djava.security.auth.login.config=../conf/zookeeper_jaas.conf -Dzookeeper.4lw.commands.whitelist=*"

$ nohup ./zkServer.sh start &

四. 部署kafka 服务端

4.1 说明

默认没配置,走的是 PLAN 方式,下面将以 sha512 认证方式进行配置说明

4.2 创建Kafka认证文件

$ cat config/kafka_broker_jaas.conf 

KafkaServer {
  org.apache.kafka.common.security.scram.ScramLoginModule required
  username="kafka"
  password="kafka@202401";
};

Client {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    username="zkkafka"
    password="zkkafka@202401";
};


KafkaClient {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="zkkafka"
    password="zkkafka@202401";
};
  • KafkaServer配置节对应的是Kafka服务器本身的超级账户kafka和其密码,使用的是ScramLoginModule模式
  • Client配置节对应的是用来登陆Zookeeper使用的,也就是上面我们配置到zookeeper_jaas.conf
  • KafkaClient配置节对应在使用自带的kafka 脚本时读取

4.3kafka 配置文件config/server.properties 变动

sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
security.inter.broker.protocol=SASL_PLAINTEXT

zookeeper.set.acl=true
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:kafka;User:zkkafka

4.4 添加相关账号到 zk

$ bin/kafka-configs.sh --zookeeper gzkafka01:5001 --alter --add-config 'SCRAM-SHA-512=[password=kafka@202401]' --entity-type users --entity-name kafka


$ bin/kafka-configs.sh --zookeeper gzkafka01:5001 --alter --add-config 'SCRAM-SHA-512=[password=zkkafka@202401]' --entity-type users --entity-name zkkafka

这步骤是添加账号密码,不可缺少.

4.5 启动加载认证文件

$ export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/testerzhang/kafkaserver/kafka_2.12/config/kafka_broker_jaas.conf"


$ nohup ./kafka-server-start.sh ../config/server.properties &

4.6自带其他脚本连接

  • bin/kafka-run-class.sh 在配置文件最开始的地方增加配置项
export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/kafka/kafkaserver/kafka_2.12-3.6.1-19092/config/kafka_client_jaas.conf
"
  • 新增配置文件config/config.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
  • 执行命令
$ bin/kafka-topics.sh --bootstrap-server gzkafka01:59091 --describe --command-config config/config.properties 

通过Nginx配置映射

这里就不展开了。


欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。

公众号二维码

updatedupdated2024-08-202024-08-20