Kafka 安装和运维
内容提要
了解Kafka的安装和运维命令,使用Ansible Playbook简化部署,使用Docker运行Kafka,创建和查看Consumer Group,创建、删除和查看Topic,增加Partition个数,命令行消费和生产数据,通过配置文件指定Consumer Group。
延伸解读
部署方式选择:Ansible 与 Docker 的适用场景
文章介绍了两种 Kafka 部署方式:Ansible Playbook 用于多节点集群部署,示例中配置了三台机器同时运行 Zookeeper 和 Kafka;Docker Compose 则用于单节点快速启动,使用 bitnami/kafka:3.5 镜像并启用 KRaft 模式。读者可根据环境规模选择:需要模拟生产集群时用 Ansible,本地开发或测试时用 Docker 更便捷。
Consumer Group 的创建与查看要点
文章指出 Consumer Group 通常无法直接通过命令行工具创建,而是在 Consumer 启动时指定,若不存在则自动创建。使用 kafka-console-consumer.sh 时,可通过 --consumer.config 指定配置文件(如 config/consumer.properties)来设置 group.id。查看 Group 列表和详情分别使用 --list 和 --describe 参数,后者能显示各分区的消费进度和 LAG。
Topic 管理命令的版本差异与实用技巧
文章中的 Topic 管理命令存在新旧版本混用:创建、查看列表和详情使用 --bootstrap-server,而删除、增加分区等操作仍使用 --zookeeper。读者需注意实际环境版本,避免参数错误。此外,查看指定 Topic 详情时可关注 ISR 列表,若 ISR 少于副本数,可能表示副本同步异常,需进一步排查 Broker 状态。
命令行生产消费与 Offset 查询
文章演示了使用 kafka-console-consumer.sh 和 kafka-console-producer.sh 进行命令行消费和生产。消费时可通过 --from-beginning 从最早消息开始。查询分区 Offset 极值可使用 kafka-run-class.sh kafka.tools.GetOffsetShell,其中 --time -1 查最新 Offset,--time -2 查最早 Offset。注意旧版 Consumer 依赖 Zookeeper 保存 Offset,新版则使用内置 T
Q&A
如何用 Ansible Playbook 部署 Kafka 集群?
先修改 Ansible hosts 文件,定义 kafka_servers 和 zk_servers 组,为每个节点指定 kafka_broker_id 和 zk_id。然后运行命令:ansible-playbook kafka.yml -i hosts --tags "java,zookeeper,kafka",即可自动完成 JRE、Zookeeper 和 Kafka 的安装。
Docker 运行 Kafka 的 docker-compose 配置怎么写?
使用 bitnami/kafka:3.5 镜像,配置 KRaft 模式:设置 KAFKA_CFG_NODE_ID=0、KAFKA_CFG_PROCESS_ROLES=controller,broker、KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093,监听器为 PLAINTEXT://:9092 和 CONTROLLER://:9093,并挂载 kafka_data 卷。然后执行 docker compose up -d 启动。
如何创建和查看 Kafka Consumer Group?
Consumer Group 通常在创建 Consumer 时指定,若不存在会自动创建。查看所有 Consumer Group 使用命令:bin/kafka-consumer-groups.sh --bootstrap-server <地址:端口> --list。查看指定 Group 详情使用:bin/kafka-consumer-groups.sh --bootstrap-server <地址:端口> --describe --group <组名>。
Kafka 创建、删除和查看 Topic 的命令是什么?
创建 Topic:bin/kafka-topics.sh --bootstrap-server <地址:端口> --create --topic <名称> --replication-factor <副本数> --partitions <分区数>。删除 Topic:bin/kafka-topics.sh --zookeeper <zk地址> --delete --topic <名称>。查看 Topic 列表:bin/kafka-topics.sh --zookeeper <zk地址> --list。查看所有 Topic 详情:bin/kafka-topics.sh --zookeeper <zk地址> --describe。
如何增加 Kafka Topic 的 Partition 个数?
使用命令:bin/kafka-topics.sh --zookeeper <zookeeper连接地址> --alter --topic <Topic名称> --partitions <新的分区数>。注意分区数只能增加不能减少。
如何通过配置文件指定 Kafka 命令行消费者的 Consumer Group?
使用 kafka-console-consumer.sh 时,通过 --consumer.config 参数指定配置文件,例如:bin/kafka-console-consumer.sh --bootstrap-server <地址:端口> --topic <Topic> --from-beginning --consumer.config config/consumer.properties。在 config/consumer.properties 中设置 group.id=test-consumer-group 即可。