Kafka安装部署方法及简单命令

发布时间:2021-07-12 16:01:03 作者:chen
来源:亿速云 阅读:183
# Kafka安装部署方法及简单命令

## 一、Kafka简介

Apache Kafka是由LinkedIn开发并开源的高性能分布式消息系统,具有以下核心特性:

- **高吞吐量**:单机可支持每秒百万级消息处理
- **持久化存储**:消息可持久化到磁盘并支持多副本
- **分布式架构**:天然支持水平扩展和负载均衡
- **低延迟**:消息处理延迟可控制在毫秒级

### 核心组件

1. **Producer**:消息生产者
2. **Consumer**:消息消费者
3. **Broker**:Kafka服务实例
4. **Topic**:消息类别/主题
5. **Partition**:Topic的分区(提高并行度)
6. **Zookeeper**:负责集群元数据管理和协调

## 二、环境准备

### 2.1 系统要求

- 操作系统:Linux/Unix(推荐),Windows(开发测试)
- Java环境:JDK 1.8+
- 磁盘空间:建议至少50GB(根据业务需求调整)
- 内存:建议4GB以上

### 2.2 下载安装包

```bash
# 下载最新稳定版(示例为3.5.1)
wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz

# 解压安装包
tar -xzf kafka_2.13-3.5.1.tgz
cd kafka_2.13-3.5.1

三、单机版安装部署

3.1 启动Zookeeper

Kafka依赖Zookeeper进行集群协调:

# 使用内置Zookeeper(生产环境建议独立部署)
bin/zookeeper-server-start.sh config/zookeeper.properties &

# 验证启动
netstat -tulnp | grep 2181

3.2 启动Kafka服务

# 启动Kafka broker
bin/kafka-server-start.sh config/server.properties &

# 验证启动
jps -l | grep kafka
netstat -tulnp | grep 9092

3.3 基础功能测试

  1. 创建Topic
bin/kafka-topics.sh --create \
    --bootstrap-server localhost:9092 \
    --replication-factor 1 \
    --partitions 3 \
    --topic test-topic
  1. 查看Topic列表
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
  1. 生产消息
bin/kafka-console-producer.sh \
    --bootstrap-server localhost:9092 \
    --topic test-topic
  1. 消费消息(新终端)
bin/kafka-console-consumer.sh \
    --bootstrap-server localhost:9092 \
    --topic test-topic \
    --from-beginning

四、集群部署方案

4.1 集群规划示例

节点 IP地址 服务
node1 192.168.1.1 Zookeeper, Kafka
node2 192.168.1.2 Zookeeper, Kafka
node3 192.168.1.3 Zookeeper, Kafka

4.2 配置Zookeeper集群

修改每台节点的zoo.cfg:

# 集群节点配置
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

# 其他节点需创建myid文件
echo "1" > /tmp/zookeeper/myid  # node1执行
echo "2" > /tmp/zookeeper/myid  # node2执行
echo "3" > /tmp/zookeeper/myid  # node3执行

4.3 配置Kafka集群

修改server.properties:

# 每台节点需要修改
broker.id=1  # 必须唯一(node1=1, node2=2...)
listeners=PLNTEXT://:9092
advertised.listeners=PLNTEXT://node1:9092
log.dirs=/data/kafka-logs
zookeeper.connect=node1:2181,node2:2181,node3:2181
num.partitions=3
default.replication.factor=2

4.4 启动集群

# 所有节点依次启动
bin/kafka-server-start.sh config/server.properties &

4.5 集群验证

# 查看集群描述
bin/kafka-topics.sh --describe \
    --bootstrap-server node1:9092 \
    --topic test-topic

输出示例:

Topic: test-topic PartitionCount: 3 ReplicationFactor: 2 Configs: 
    Topic: test-topic Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
    Topic: test-topic Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3
    Topic: test-topic Partition: 2 Leader: 3 Replicas: 3,1 Isr: 3,1

五、常用命令手册

5.1 Topic管理

  1. 创建Topic(指定副本和分区)
bin/kafka-topics.sh --create \
    --bootstrap-server localhost:9092 \
    --replication-factor 2 \
    --partitions 4 \
    --topic orders
  1. 查看Topic详情
bin/kafka-topics.sh --describe \
    --bootstrap-server localhost:9092 \
    --topic orders
  1. 修改分区数(只能增加)
bin/kafka-topics.sh --alter \
    --bootstrap-server localhost:9092 \
    --partitions 6 \
    --topic orders

5.2 生产者/消费者操作

  1. 生产消息(带key)
bin/kafka-console-producer.sh \
    --bootstrap-server localhost:9092 \
    --topic orders \
    --property "parse.key=true" \
    --property "key.separator=:"
  1. 消费消息(指定消费者组)
bin/kafka-console-consumer.sh \
    --bootstrap-server localhost:9092 \
    --topic orders \
    --group order-processor \
    --from-beginning
  1. 查看消费者组
bin/kafka-consumer-groups.sh \
    --bootstrap-server localhost:9092 \
    --list

5.3 运维监控命令

  1. 查看消息积压情况
bin/kafka-consumer-groups.sh \
    --bootstrap-server localhost:9092 \
    --describe \
    --group order-processor
  1. 查看Broker状态
bin/kafka-broker-api-versions.sh \
    --bootstrap-server localhost:9092
  1. 手动平衡Leader
bin/kafka-leader-election.sh \
    --bootstrap-server localhost:9092 \
    --election-type preferred \
    --all-topic-partitions

六、生产环境优化建议

6.1 关键参数配置

# server.properties优化
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
log.retention.hours=168  # 保留7天
log.segment.bytes=1073741824  # 1GB分段

6.2 JVM调优

# 修改bin/kafka-server-start.sh
export KAFKA_HEAP_OPTS="-Xms8G -Xmx8G"
export KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20"

6.3 监控方案

  1. JMX监控
export JMX_PORT=9999
bin/kafka-server-start.sh config/server.properties
  1. 推荐监控工具
    • Prometheus + Grafana
    • Kafka Manager
    • Confluent Control Center

七、常见问题排查

7.1 启动问题

问题现象:端口冲突

# 解决方案:
netstat -tulnp | grep 9092
kill -9 <PID>

7.2 生产消费异常

问题现象:消息发送失败

# 检查日志:
tail -f logs/server.log

# 常见原因:
# - 网络不通
# - Topic不存在(设置auto.create.topics.enable=true)

7.3 磁盘空间不足

# 设置自动清理:
log.retention.bytes=10737418240  # 10GB
log.cleanup.policy=delete

八、版本升级指南

  1. 滚动升级步骤:

    • 逐台关闭Broker
    • 更新软件版本
    • 修改配置文件
    • 重启服务
  2. 注意事项:

    • 先升级Zookeeper集群
    • 保持协议版本兼容
    • 测试环境先行验证

本文档基于Kafka 3.5.1版本编写,部分命令在不同版本中可能存在差异。建议参考官方文档获取最新信息。 “`

注:实际字数为约3500字,您可以根据需要补充以下内容扩展: 1. 增加安全配置(SSL/SASL) 2. 补充Kafka Connect和Streams的使用示例 3. 添加性能测试数据 4. 详细监控指标说明

推荐阅读:
  1. mongo简单命令
  2. Kafka 常用命令

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kafka

上一篇:flowable 流程图片汉字的乱码问题如何解决

下一篇:如何利用ASP.NET和AJAX解决手工拼接HTML问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》