kafka集群部署和測試


創建一個三個broker的集群

修改副本默認值,KAFKA_DEFAULT_REPLICATION_FACTOR=3,默認是1,沒有副本。設置為和broker數量一樣

docker run -d --name kafka01 -p 9092:9092 -p 9999:9999 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.18.5:2181 -e KAFKA_ADVERTISED_HOST_NAME=192.168.18.5 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.18.5:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e JMX_PORT=9999 -e KAFKA_DEFAULT_REPLICATION_FACTOR=3 -e KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.18.5 -Dcom.sun.management.jmxremote.rmi.port=9999"  wurstmeister/kafka:0.11.0.0

docker run -d --name kafka02 -p 9092:9092 -p 9999:9999 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.18.5:2181 -e KAFKA_ADVERTISED_HOST_NAME=192.168.18.249 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.18.249:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e JMX_PORT=9999 -e KAFKA_DEFAULT_REPLICATION_FACTOR=3 -e KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.18.249 -Dcom.sun.management.jmxremote.rmi.port=9999"  wurstmeister/kafka:0.11.0.0

docker run -d --name kafka02 -p 9092:9092 -p 9999:9999 -e KAFKA_BROKER_ID=3 -e KAFKA_ZOOKEEPER_CONNECT=192.168.18.5:2181 -e KAFKA_ADVERTISED_HOST_NAME=192.168.21.166 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.21.166:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e JMX_PORT=9999 -e KAFKA_DEFAULT_REPLICATION_FACTOR=3 -e KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.21.166 -Dcom.sun.management.jmxremote.rmi.port=9999"  wurstmeister/kafka:0.11.0.0

  

概念理解

復制系數 replication.factor

  topic的復制系數=3,就是每個分區會被3個不同的broker復制3次。數據容量就是3倍,可以容忍2個broker宕機或進入維護狀態。官方推薦至少3個brokers。

分區副本的leader和follower

  分區副本中,有一個副本會被選舉為leader,leader負責處理producer 和 consume的請求,而副本機器只負責sync leader收到的消息。

  leader所在broker宕機,則有一個follower會被選舉為leader。

 

創建帶副本的topic

手動創建一個topic,復制系數設為3,分區為2,就是每個broker上一個副本。

查看可見,副本=3,brokers總數=3,brokers for topic = 3,就是每個broker上一個副本。

這個topic是2分區,可見,每個broker上都有2分區。

分區信息,可見,分區0的leader副本在broker1上,分區1的副本在broker3上。

 

故障測試:broker掛掉

現在殺掉broker1,可見,分區0的leader副本到了broker2上,在同步中的副本信息中,沒有了broker1。

同時生產和消費正常。

 重啟broker1,broker1又回來了。

 查看broker的信息,broker1上擁有大量的數據rw

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM