kafka 安装 以及 Kraft 模式、安全认证配置

文章详细介绍了Zookeeper的单节点和集群安装步骤,包括配置端口、数据目录以及集群中的协调服务。接着讲述了Kafka的集群安装,强调了Zookeeper在Kafka中的角色。此外,还提到了Kafka的Kraft模式,一种不再依赖Zookeeper的启动方式。最后,文章讨论了SASL/PLAIN安全认证配置在Kafka中的应用,提供了配置示例和SpringBoot的YAML配置。

常见安装:zookeeper + kafka

zookeeper 单节点安装 :

  • apach官网下载对应包:apache-zookeeper-3.7.1-bin.tar.gz
  • 修改对应配置文件 /conf/zoo_sample.cfg ,配置端口以及数据目录
  • 2
  • sh zkServer.sh start 启动 、sh zkServer.sh stop 停止、sh zkServer.sh status 状态
  • sh zkCli.sh -server 客户端
    在这里插入图片描述

zookeeper 集群安装:

  • 在每个节点data 目录,创建一个 myid 的文件,myid内容为服务id,没个节点服务id不同
    在这里插入图片描述
    在这里插入图片描述
  • 配置文件zoo.cfg添加集群信息:server.myid=ip:2888:3888
  • 2888为 服务器 follower 与集群leader 的通信端口、3888 leader挂掉后,选举用端口
    在这里插入图片描述
  • 各节点启动集群.
  • 分布式框架提供协调服务,为kafak 管理员,需要 zookeeper 选择机制节点监听
    • 集群管理、leader选举
    • Topic注册
    • Broker注册
  • zookeeper 存储 kafka 的 borker信息,topic等 信息

在这里插入图片描述

kafka 集群安装:

  • https://kafka.apache.org/ 官网下载对应运行体,eg:kafka_2.12-3.0.0.tgz
  • config/server.properties 修改对应服务配置
    • broker.id 服务唯一id
    • log.dirs=/tmp/kafka-logs 数据目录
    • zookeeper.connect=192.168.2.207:2181,192.168.2.208:2181/kafka 集群地址配置
  • 各节点启动 : sh kafka-server-start.sh -daemon …/config/server.properties

kafka - Kraft 模式(去掉zookeeper)

  • 版本大于 2.8.0 时,可以不依赖zookeeper 环境启动
    在这里插入图片描述
  • 修改 krafk 目录下 server.properties 配置文件,以下操作每个节点需要同步配置,node.id 为唯一
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 生成一个随机id: sh kafka-storage.sh random-uuid
  • 初始化:sh kafka-storage.sh format -t ${id} -c /opt/kafka/kafka_2.12-3.0.0/config/kraft/server.properties
    -Kraft 模式启动: sh ./bin/kafka-server-start.sh -daemon ./config/kraft/server.properties

Kraft 模式 以及 安全认证配置:

  • SASL/GSSAPI:kerberos认证方式,一般使用随机密码的keytab认证方式,密码是加密的,也是企业里使用最多的认证方式;
  • SASL/PLAIN:这种方式其实就是一个账号/密码的认证方式,不过它有很多缺陷,比如用户名密码是存储在文件中,不能动态添加,密码明文等等!好处是足够简单;
  • SASL/SCRAM:针对SASL/PLAIN方式的不足而提供的另一种认证方式。这种方式的用户名/密码是存储中zookeeper的,因此能够支持动态添加用户。该种认证方式还会使用sha256或sha512对密码加密,安全性相对会高一些,在0.10.2版本引入;

SASL/PLAIN 安全认证配置 :

  • 新建config 文件 config/kafka_server_jaas.conf
  • 👇
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
serviceName="kafka"
username="admin"
password="admin"
user_admin="admin";
};
  • copy一份kafka-server-start.sh ,修改名称 kafka-server-start-sasl.sh启动脚本修改名称,引入加密文件; 注意路径
    在这里插入图片描述
    在这里插入图片描述

修改配置文件内容:

  • cp一份 server_sasl.properties 修改名称为server_sasl.properties 与非安全认证分开
# 修改以下内容
node.id=1
controller.quorum.voters=1@kraft1:9093
listeners=SASL_PLAINTEXT://192.168.2.207:9092,CONTROLLER://192.168.2.207:9093
inter.broker.listener.name=SASL_PLAINTEXT
advertised.listeners=SASL_PLAINTEXT://192.168.2.207:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/kafka_2.12-3.0.0/config/kafka_server_jaas.conf"
fi

启动:sh ./bin/kafka-server-start-sasl.sh -daemon ./config/kraft/server_sasl.properties

spring boot yml配置

server:
  port: 8200

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  application:
    name: @artifactId@
  kafka:
    bootstrap-servers: 192.168.2.207:9092
    # 生产配置
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
    #消费配置
    consumer:
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      group-id: xiaoshu
      enable-auto-commit: false
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";

    listener:
      # 手动调用Acknowledgment.acknowledge()后立即提交
      ack-mode: manual

注:Kraft 配置了安全模式后,集群搭建不成功了,下次配好了,再补上…

在这里插入图片描述

KafkaKraft 模式下启动 SASL_PLAINTEXT 认证可按以下步骤操作: 1. **修改 Kafka 配置文件**:修改 `server.properties` 文件,具体修改内容如下: ```properties # 修改协议 listeners=SASL_PLAINTEXT://0.0.0.0:9193 advertised.listeners=SASL_PLAINTEXT://12.120.20.3:9092 # 如果 inter.broker.listener.name=PLAINTEXT 这一行默认是开启的,注释掉这一行 # 增加下面四行配置 security.inter.broker.protocol=SASL_PLAINTEXT sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN allow.everyone.if.no.acl.found=true ``` 以上配置Kafka 的监听协议修改为 `SASL_PLAINTEXT`,并设置了相应的安全和认证机制 [^3]。 2. **格式化集群信息并启动服务**:使用 `kafka-storage.sh` 格式化集群信息,并使用 `kafka-server-start-jaas.sh` 启动服务,命令如下: ```bash /root/kafka_2.13-3.3.1/bin/kafka-storage.sh format -t T1CYXg2DQPmdSYSUI-FNFw -c /root/kafka_2.13-3.3.1/config/kraft/server.jaas.properties /root/kafka_2.13-3.3.1/bin/kafka-server-start-jaas.sh /root/kafka_2.13-3.3.1/config/kraft/server.jaas.properties ``` 此步骤利用给定的 token 和配置文件格式化集群信息,并启动 Kafka 服务 [^1]。 3. **创建 SCRAM 凭证(可选)**:如果需要定义用户认证凭据,可以执行以下命令: ```bash kafka-configs.sh --alter --add-config 'SCRAM-SHA-256=[password=your_password],SCRAM-SHA-512=[password=your_password]' --entity-type users --entity-name your_username --bootstrap-server localhost:9092 ``` 此命令为全局集群操作,只需在集群中任意一个 Broker 节点上执行一次,它将用户凭证写入 Kafka 集群的元数据,所有 Broker 都能访问这些信息 [^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值