kafka 3.x 配置kerbos

1、kerbors主体配置

生成主体:

for i in {01..11}; do kadmin.local -q "addprinc -randkey kafka/hadoop$i.EX AMPLE.COM@EX AMPLE.COM"; done

导出主体

for i in {01..11}; do kadmin.local -q "xst -k kafka.keytab kafka/hadoop$i.EX AMPLE.COM@EX AMPLE.COM"; done

2、kafka server kerbos配置

2.1 准备 server-kerberos.properties 文件。 拷贝 Kafka config 目录下(如果使用自带zk,配置从/BigData/run/kafka/config/kraft/进行拷贝,下同)的 server.properties 文件,命名为 kerberos-server.properties ,编辑认证配置相关的内容

kerberos-server.properties

security.inter.broker.protocol=SASL_PLAINTEXT

sasl.mechanism.inter.broker.protocol=GSSAPI

sasl.enabled.mechanisms=GSSAPI

sasl.kerberos.service.name=root

2.2 准备 server-jaas.conf 配置文件。 kerberos 目录下,创建文件 kafka-server-jaas.conf,编辑内容如下

KafkaServer {

com.sun.security.auth.module.Krb5LoginModule required

useKeyTab=true

//不同的主机,需修改成不同的keytab文件

keyTab="/BigData/run/kafka/config/kafka.keytab"

storeKey=true

useTicketCache=false

// Kafka Server 在 KDC 中的用户名全称

principal="kafka/hadoop01@EX AMPLE.COM";

};

2.3 准备 kafka-server-kerberos-start.sh 文件,添加 Kerberos 认证配置。 拷贝 bin/kafka-server-start.sh 脚本,命名为 kafka-server-kerberos-start.sh,编辑最后一行,在最后一行代码之前,添加 Krb5 环境变量和 jaas.conf 配置信息

export KAFKA_OPTS="-Dzookeeper.sasl.client=false -Dzookeeper.sasl.client.username=zk-server

-Djava.security.krb5.conf=/etc/krb5.conf

-Djava.security.auth.login.config=/BigData/run/kafka/config/kafka-server-jaas.conf"

3、kafka client kerbos配置

3.1 第一步,准备 client-kerberos.properties 文件。 拷贝 Kafka config 目录下的 consumer.properties 文件,命名为 client-kerberos.properties ,编辑认证配置相关的内容:

security.protocol=SASL_PLAINTEXT

sasl.mechanism=GSSAPI

sasl.kerberos.service.name=kafka

3.2 第二步,准备 client-jaas.conf 配置文件。 kerberos 目录下,创建文件 kafka-client-jaas.conf,编辑内容如下:

KafkaClient {

com.sun.security.auth.module.Krb5LoginModule required

useKeyTab=true

//不同的主机,需修改成不同的keytab文件

keyTab="/BigData/run/kafka/config/kafka.keytab"

storeKey=true

useTicketCache=false

// Client 在KDC中的帐号

principal="kafka@EXAMPLE.COM";

};

3.3

第三步,准备 kafka-server-kerberos-start.sh 文件,添加 Kerberos 认证配置。 拷贝 bin/kafka-console-consumer.sh 脚本,命名为 kerberos-kafka-console-consumer.sh,编辑最后一行,在最后一行代码之前,添加 Krb5 环境变量和 jaas.conf 配置信息:

export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf

-Djava.security.auth.login.config=/BigData/run/kafka/config/kafka-client-jaas.conf"

4、启动服务

如果使用kafka自带zk,需要先启动zk

/BigData/run/kafka/bin/zookeeper-server-start.sh -daemon /BigData/run/kafka/config/zookeeper.properties

kafka server启动

kafka-server-kerberos-start.sh -daemon /BigData/run/kafka/config/kraft/kerberos-server.properties

kafka-console-consumer.sh --bootstrap-server hadoop04.EXAMPLE.CN:9092 --topic test123 --consumer.config=/BigData/run/kafka/config/kraft/client-kerberos.properties --from-beginning

kafka-console-producer.sh --broker-list hadoop04.EXAMPLE.CN:9092 --topic wujunjie --producer.config=/BigData/run/kafka/config/kraft/client-kerberos.properties

kafka-console-consumer.sh --bootstrap-server hadoop04.EXAMPLE.CN:9092 --topic wujunjie --consumer.config=/BigData/run/kafka/config/kraft/client-kerberos.properties --from-beginning

普通场景的启动服务和测试验证

bin/kafka-server-start.sh config/kraft/server.properties

kafka-console-producer.sh --bootstrap-server hadoop04:9092 --topic test

kafka-console-consumer.sh --bootstrap-server hadoop04:9092 --topic test

相关问题1:

1、Only one of inter.broker.listener.name and security.inter.broker.protocol should be set.

inter.broker.listener.name或者 security.inter.broker.protocol配置一个就好,不要2个都配置

Name of listener used for communication between brokers.

#inter.broker.listener.name=PLAINTEXT

保留security.inter.broker.protocol

2、java.lang.IllegalArgumentException: requirement failed: inter.broker.listener.name must be a listener name defined in advertised.listeners. The valid options based on currently configured listeners are PLAINTEXT

listeners=SASL_PLAINTEXT://hadoop04.EXAMPLE.COM:9092,CONTROLLER://hadoop04.EXAMPLE.COM:9093

advertised.listeners=SASL_PLAINTEXT://hadoop04.EXAMPLE.COM:9092

3、Caused by: javax.security.auth.login.LoginException: Could not login: the client is being asked for a password, but the Kafka client code does not currently support obtaining a password from the user. not available to garner authentication information from the user

用户名和密码不匹配或者权限有问题

-rw-------. 1 root root 7922 Aug 8 08:03 kafka.keytab

4、[2024-08-08 21:31:58,430] WARN [Producer clientId=console-producer] Bootstrap broker hadoop04.EXAMPLE.CN:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

kinit -kt /BigData/run/kafka/config/kafka.keytab kafka/EXAMPLE.CN@EXAMPLE.CN

相关推荐
云和数据.ChenGuang4 小时前
OpenEuler系统下RabbitMQ安装与基础配置教程
服务器·分布式·rabbitmq·ruby·数据库运维工程师·运维教程
大千AI助手8 小时前
程序合约:形式化验证中的规范与实现框架
分布式·区块链·软件开发·形式化验证·大千ai助手·程序合约·contracts
云和数据.ChenGuang8 小时前
Deepseek适配场景:OpenEuler系统下RabbitMQ安装与基础配置教程
分布式·rabbitmq·ruby
时光追逐者8 小时前
一个基于 .NET 开源、功能强大的分布式微服务开发框架
分布式·微服务·开源·c#·.net·.net core
2501_940198699 小时前
【前瞻创想】Kurator·云原生实战派:打造下一代分布式云原生基础设施
分布式·云原生
太阳伞下的阿呆10 小时前
kafka高吞吐持久化方案(2)
分布式·kafka·高并发·重入锁
永亮同学11 小时前
【探索实战】告别繁琐,一栈统一:Kurator 从0到1落地分布式云原生应用管理平台!
分布式·云原生
十五年专注C++开发12 小时前
ZeroMQ: 一款高性能、异步、轻量级的消息传输库
网络·c++·分布式·zeroqm
张人玉13 小时前
LiveCharts WPF MVVM 图表开发笔记
大数据·分布式·wpf·livecharts
不惑_13 小时前
Kurator 分布式云原生平台从入门到实战教程
分布式·云原生