B i M A P

Kafka|How to Setup Kafka Cluster in 10 Minutes

kafka integrate beats and logstash


使用環境

  • 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



如何使用 Kafka 分流 beats 與 logstash 之間的瞬間高流量



有任何問題,或是想看新主題?  聯絡我們



延伸閱讀
winstonlu的大頭照
ELK 達人

我們致力於 ELK 的各種應用,協助企業建置相關服務。我們也提供基於 ELK 的各種解決方案,有任何問題,歡迎加入我們的官方 Line,或來信詢問,期待與您面對面的機會。