# 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
Kafka依賴Zookeeper進行集群協調:
# 使用內置Zookeeper(生產環境建議獨立部署)
bin/zookeeper-server-start.sh config/zookeeper.properties &
# 驗證啟動
netstat -tulnp | grep 2181
# 啟動Kafka broker
bin/kafka-server-start.sh config/server.properties &
# 驗證啟動
jps -l | grep kafka
netstat -tulnp | grep 9092
bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 3 \
--topic test-topic
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning
節點 | IP地址 | 服務 |
---|---|---|
node1 | 192.168.1.1 | Zookeeper, Kafka |
node2 | 192.168.1.2 | Zookeeper, Kafka |
node3 | 192.168.1.3 | Zookeeper, Kafka |
修改每臺節點的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執行
修改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
# 所有節點依次啟動
bin/kafka-server-start.sh config/server.properties &
# 查看集群描述
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
bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 2 \
--partitions 4 \
--topic orders
bin/kafka-topics.sh --describe \
--bootstrap-server localhost:9092 \
--topic orders
bin/kafka-topics.sh --alter \
--bootstrap-server localhost:9092 \
--partitions 6 \
--topic orders
bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic orders \
--property "parse.key=true" \
--property "key.separator=:"
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic orders \
--group order-processor \
--from-beginning
bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--list
bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe \
--group order-processor
bin/kafka-broker-api-versions.sh \
--bootstrap-server localhost:9092
bin/kafka-leader-election.sh \
--bootstrap-server localhost:9092 \
--election-type preferred \
--all-topic-partitions
# 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分段
# 修改bin/kafka-server-start.sh
export KAFKA_HEAP_OPTS="-Xms8G -Xmx8G"
export KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20"
export JMX_PORT=9999
bin/kafka-server-start.sh config/server.properties
問題現象:端口沖突
# 解決方案:
netstat -tulnp | grep 9092
kill -9 <PID>
問題現象:消息發送失敗
# 檢查日志:
tail -f logs/server.log
# 常見原因:
# - 網絡不通
# - Topic不存在(設置auto.create.topics.enable=true)
# 設置自動清理:
log.retention.bytes=10737418240 # 10GB
log.cleanup.policy=delete
滾動升級步驟:
注意事項:
本文檔基于Kafka 3.5.1版本編寫,部分命令在不同版本中可能存在差異。建議參考官方文檔獲取最新信息。 “`
注:實際字數為約3500字,您可以根據需要補充以下內容擴展: 1. 增加安全配置(SSL/SASL) 2. 補充Kafka Connect和Streams的使用示例 3. 添加性能測試數據 4. 詳細監控指標說明
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。