ZK Kafka集群添加认证
本文参考: https://www.cnblogs.com/ilovena/p/10123516.html
环境说明:
- 软件版本: kafka_2.12-2.6.0.tgz(本文使用的是kafka自带的zk)
- 系统版本: CentOS 7.3.1611
- 机器:
- 192.168.111.65
- 192.168.111.66
- 192.168.111.67
zookeeper配置
- 为zookeeper添加SASL支持,在配置文件
zookeeper.properties
添加如下代码
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
- 新建
zk_server_jaas.conf
文件,为Zookeeper添加账号认证信息
Server {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="cluster"
password="clusterpasswd"
user_kafka="kafkapasswd";
};
说明:
a. zk_server_jaas.conf
最好放在config目录下(如果使用独立zk安装包,可以随意放置,后面第四步修改zkEnv配置即可)
b. username
和password
是zk集群之间的认证密码
c. user_kafka
定义了一个用户kafka
,密码为kafkapasswd
- 导入kafka相关的jar包到zk的lib目录下,版本根据自己实际情况而定(此步骤只针对于单独使用zookeeper包时使用,使用kafka自带的zk时,不需要此步骤)
kafka-clients-2.6.0.jar
lz4-java-1.7.1.jar
slf4j-api-1.7.30.jar
slf4j-log4j12-1.7.30.jar
snappy-java-1.1.7.3.jar
- 修改zkEnv.sh,请根据自己实际情况修改目录(单独使用zookeeper安装包时才需要执行此步骤)
export SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/data/zookeeper/conf/zk_server_jaas.conf "
kafka配置
- 在kafka的config目录下,新建
kafka_server_jaas.conf
文件,内容如下
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="cluster"
password="cluster"
user_cluster="clusterpasswd"
user_kafka="kafkapasswd";
};
Client{
org.apache.kafka.common.security.plain.PlainLoginModule required
username="kafka"
password="kafkapasswd";
};
说明: a. KafkaServer说明
- 第一行指定了使用PLAIN认证方法
username
和password
是kafka的多个broker之间进行认证的账号密码user_kafka
设置了用户kafka,密码为kafkapasswd
,用于客户端的生产者和消费者连接认证- ????????
- 修改kafka配置文件开启SASL认证,在
server.properties
添加如下信息
listeners=SASL_PLAINTEXT://(IP):9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
allow.everyone.if.no.acl.found=true
- 在server启动脚本
kafka-server-start.sh
添加认证信息
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
将上面的行修改为如下:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/home/kafka_server_jaas.conf"
- 启动kafka服务端
./kafka-server-start.sh -daemon /data/kafka/config/server.properties
kafka服务端正常启动后,应该会有类似下面这行的日志信息,说明认证功能开启成功
Registered broker 0 at path /brokers/ids/0 with addresses: EndPoint((IP),9092,ListenerName(SASL_PLAINTEXT),SASL_PLAINTEXT) (kafka.utils.ZkUtils)
zookeeper 密码
kafka 密码
- KafkaServer username: broker之间的连接 user_:连接到broker的用户