本文参考: 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配置

  1. 为zookeeper添加SASL支持,在配置文件zookeeper.properties添加如下代码
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
  1. 新建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. usernamepassword是zk集群之间的认证密码 c. user_kafka定义了一个用户kafka,密码为kafkapasswd

  1. 导入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
  1. 修改zkEnv.sh,请根据自己实际情况修改目录(单独使用zookeeper安装包时才需要执行此步骤)
export SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/data/zookeeper/conf/zk_server_jaas.conf "

kafka配置

  1. 在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认证方法
  • usernamepassword是kafka的多个broker之间进行认证的账号密码
  • user_kafka设置了用户kafka,密码为kafkapasswd,用于客户端的生产者和消费者连接认证
  • ????????
  1. 修改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
  1. 在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"
  1. 启动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的用户