使用環境
- OS:Centos 7
- Kafka:2.8
Kafka Install
wget https://downloads.apache.org/kafka/2.8.0/kafka_2.13-2.8.0.tgz tar -xzf kafka_2.13-2.8.0.tgz cd kafka_2.13-2.8.0
Zookeeper Setup
Kafka 目前的底層依舊透過 Zookeeper 來做資料的控制,所以在啟動 Kafka 前,先修改 Zookeeper config file。
vim config/zookeeper.properties
測試用的話,可以同一台主機上建立三份 zookeeper.properties 並加入以下內容,但 port 號需更換。
務必設定:
- initLimit:cluster 中的 follower node 與 leader node 之間,初始連接能容忍的最大 tickTime 倍數時間,默認 10,cluster 龐大的話,建議調高此參數。
- syncLimit:cluster 中的健康度檢測,follower node 與 learder node 之間的請求、應答的 tickTime 倍數時間,如超過則丟棄。
- 前面 2888 port 為 follower node 連結 leader node 專用 port
- 後面 3888 port 為 cluster 中選舉 leader 的專用 port
echo initLimit=10 >> /home/kafka/config/zookeeper.properties echo syncLimit=5 >> /home/kafka/config/zookeeper.properties echo server.1=node1:2888:3888 >> /home/kafka/config/zookeeper.properties echo server.2=node2:2888:3888 >> /home/kafka/config/zookeeper.properties echo server.3=node3:2888:3888 >> /home/kafka/config/zookeeper.properties
修改 myid
一個 zookeeper instance 需要配置一個唯一的 myid 做為識別,並參考 zookeeper.properties 的 dataDir 設定值,修改 1、2、3...依此類推。
echo 1 >> /tmp/zookeeper/myid
啟動 Zookeeper
可加入 -daemon 背景執行,第一次可不加,方便查看 log。
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
Kafka Setup
修正 server.properties 相關參數的設定。
vim config/server.properties # 每個節點要不一樣 broker.id = 0 # cluster 如架同一台主機則需調整不同目錄 log.dir # cluster 如架同一台主機則需調整不同 port listener # 加入 zookeeper cluster ip zookeeper.connect=172.17.0.2:2181,172.17.0.3:2181,172.17.0.4:2181
啟動 Kafka
可加入 -daemon 背影執行,初次建議不加,方便看 Log。
bin/kafka-server-start.sh -daemon config/server.properties
檢查
檢查 port 是否正常被佔用
lsof -i -P -n | grep LISTEN
建立 topic 測試 cluster 有正常啟動
./bin/kafka-topics.sh --create --topic my-topic --replication-factor 3 --partitions 1 --bootstrap-server localhost:9092
Kafka cluster 內的分片跟副本數務必會分開存放不同 node,所以假如 3 個 node,但 --replication-factor 參數為 4,則會報以下錯誤,代表我們的 cluster 設置正常。
ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 4 larger than available brokers: 3.
使用 --describe 來查看 topic 的狀態,應該會看到分片、副本的狀態。
bin/kafka-topics.sh --describe --topic test-topic-three --bootstrap-server localhost:9092 Topic: test-topic-three TopicId: i4zBEW0pQ1e2eI-JmxF3MA PartitionCount: 3 ReplicationFactor: 3 Configs: segment.bytes=1073741824 Topic: test-topic-three Partition: 0 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0 Topic: test-topic-three Partition: 1 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2 Topic: test-topic-three Partition: 2 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1
有任何問題,或是想看新主題?
聯絡我們