溫馨提示×

kafka在centos如何精準配置

小樊
42
2025-10-17 16:29:01
欄目: 智能運維

一、基礎環境準備

1. 安裝Java環境

Kafka依賴Java運行環境,需安裝OpenJDK 8或更高版本(推薦Java 11)。執行以下命令安裝并驗證:

sudo yum install -y java-11-openjdk-devel  # 安裝Java 11
java -version  # 驗證安裝(需顯示Java版本信息)

2. 下載并解壓Kafka

從Apache官網下載最新穩定版Kafka(如3.5.2),解壓至指定目錄(如/usr/local/kafka):

wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz  # 下載Kafka
tar -xzf kafka_2.12-3.5.2.tgz -C /usr/local/  # 解壓
sudo mv /usr/local/kafka_2.12-3.5.2 /usr/local/kafka  # 重命名目錄

3. 配置Zookeeper(Kafka依賴)

Kafka需通過Zookeeper實現集群管理和元數據存儲。編輯Zookeeper配置文件(/usr/local/kafka/config/zookeeper.properties),設置集群模式(單節點示例):

dataDir=/usr/local/kafka/zookeeper_data  # 數據存儲目錄
clientPort=2181  # 客戶端連接端口
initLimit=5  # Leader與Follower初始同步時間
syncLimit=2  # Leader與Follower同步超時時間
server.1=localhost:2888:3888  # 集群節點配置(單節點可省略)

啟動Zookeeper服務:

nohup /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties > /dev/null 2>&1 &

二、Kafka精準配置(server.properties)

Kafka的核心配置文件為/usr/local/kafka/config/server.properties,需調整以下關鍵參數:

1. Broker唯一標識

broker.id=0  # 集群中每個Broker的唯一ID(0~255),多Broker需不同

2. 監聽地址配置

listeners=PLAINTEXT://0.0.0.0:9092  # 監聽所有網絡接口的9092端口
advertised.listeners=PLAINTEXT://your_server_ip:9092  # 客戶端連接的地址(替換為服務器公網/內網IP)

3. 日志存儲路徑

log.dirs=/usr/local/kafka/kafka_logs  # 日志存儲目錄(建議使用獨立磁盤,多目錄用逗號分隔)

4. Zookeeper連接

zookeeper.connect=localhost:2181  # 單節點Zookeeper;多節點用逗號分隔(如zk1:2181,zk2:2181,zk3:2181)

5. 分區與副本設置(高可用關鍵)

num.partitions=8  # Topic默認分區數(根據業務吞吐量調整,建議≥3)
default.replication.factor=3  # Topic默認副本因子(≥2,生產環境建議3)
min.insync.replicas=2  # 寫操作需確認的最小副本數(≤default.replication.factor,保證數據持久性)

6. 日志保留策略

log.retention.hours=168  # 日志保留時間(小時,默認7天,可根據需求調整為24小時或更長)
log.segment.bytes=1073741824  # 日志段大?。?GB,建議1~10GB,過大影響刪除效率)
log.retention.check.interval.ms=300000  # 日志檢查間隔(5分鐘)

7. 網絡與線程優化

num.network.threads=3  # 網絡請求處理線程數(建議≥3,根據CPU核心數調整)
num.io.threads=8  # 磁盤I/O線程數(建議≥8,根據磁盤數量和性能調整)
socket.send.buffer.bytes=102400  # 發送緩沖區大?。?00KB,默認100KB)
socket.receive.buffer.bytes=102400  # 接收緩沖區大?。?00KB,默認100KB)
socket.request.max.bytes=104857600  # 請求最大字節數(100MB,默認100MB)

三、啟動Kafka服務

1. 啟動Kafka

nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties > /dev/null 2>&1 &

2. 設置開機自啟

創建Systemd服務文件(/etc/systemd/system/kafka.service),內容如下:

[Unit]
Description=Apache Kafka Server
After=network.target zookeeper.service  # 依賴Zookeeper服務

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

啟用并啟動服務:

sudo systemctl daemon-reload
sudo systemctl enable kafka
sudo systemctl start kafka

四、驗證Kafka配置

1. 創建測試Topic

/usr/local/kafka/bin/kafka-topics.sh --create \
  --bootstrap-server localhost:9092 \
  --replication-factor 1 \
  --partitions 1 \
  --topic test_topic

2. 發送測試消息

/usr/local/kafka/bin/kafka-console-producer.sh --topic test_topic --bootstrap-server localhost:9092

輸入消息(如Hello Kafka)并按回車。

3. 消費測試消息

/usr/local/kafka/bin/kafka-console-consumer.sh --topic test_topic --from-beginning --bootstrap-server localhost:9092

應能看到發送的Hello Kafka消息。

五、關鍵優化建議

1. 防火墻配置

開放Kafka(9092)和Zookeeper(2181)端口:

sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2181/tcp --permanent
sudo firewall-cmd --reload

2. 磁盤性能優化

  • 使用SSD存儲日志目錄(log.dirs),避免機械硬盤。
  • 多個日志目錄分散到不同物理磁盤(如/data1/kafka_logs,/data2/kafka_logs),提高IO吞吐量。

3. JVM調優

調整Kafka的JVM堆內存(根據服務器內存調整,建議不超過物理內存的70%):

export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"  # 在kafka-server-start.sh前添加

4. 監控與日志

  • 使用Prometheus+Grafana監控Kafka集群(采集Broker、Topic、Consumer等指標)。
  • 配置日志輪轉(log4j.properties),避免日志文件過大占用磁盤空間。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女