Kafka 系列(一)之集群搭建(基于docker-compose搭建)

周末花了兩天時(shí)間入門學(xué)習(xí)一下 Kafka 的基本概念和使用。在學(xué)習(xí)Kafka之前,首先搭建Kafka需要的環(huán)境以便于之后的學(xué)習(xí)和項(xiàng)目準(zhǔn)備。

docker和docker-compose的搭建和使用我就默認(rèn)你都會(huì)了哈!如果不清楚的先了解一下...

集群搭建

廢話不多說(shuō),上代碼!

version: '3.1'
services:
  zookeeper1:
    image: zookeeper:3.4.13
    container_name: zookeeper1
    restart: always
    hostname: zookeeper1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
  zookeeper2:
    image: zookeeper:3.4.13
    container_name: zookeeper2
    restart: always
    hostname: zookeeper2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
  zookeeper3:
    image: zookeeper:3.4.13
    container_name: zookeeper3
    restart: always
    hostname: zookeeper3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
  kafka1:
    image: xuxiangwork/kafka
    container_name: kafka1
    ports:
      - "9092:9092"
      - "1099:1099"
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: 172.28.0.1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2182,zookeeper3:2183
      CUSTOM_JMX_PORT: "1099"
      JVM_XMS: "256M"
      JVM_XMX: "512M"
    volumes:
      - E:\kafka1:/kafka
    restart: always
  kafka2:
    image: xuxiangwork/kafka
    container_name: kafka2
    ports:
      - "9093:9092"
      - "1100:1100"
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: 172.28.0.2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2182,zookeeper3:2183
      CUSTOM_JMX_PORT: "1100"
      JVM_XMS: "256M"
      JVM_XMX: "512M"
    volumes:
      - E:\kafka2:/kafka
    restart: always
  kafka3:
    image: xuxiangwork/kafka
    container_name: kafka3
    ports:
      - "9094:9092"
      - "1101:1101"
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: 172.28.0.3
      KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2182,zookeeper3:2183
      CUSTOM_JMX_PORT: "1101"
      JVM_XMS: "256M"
      JVM_XMX: "512M"
    volumes:
      - E:\kafka3:/kafka
    restart: always
  kafka-manager:
    container_name: kafka-manager
    image: xuxiangwork/kafka-manager
    ports:
      - "9000:9000"
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
    environment:
      ZK_HOSTS: zookeeper1:2181
      APPLICATION_SECRET: letmein
      KAFKA_MANAGER_AUTH_ENABLED: "true"
      KAFKA_MANAGER_USERNAME: 你的控制臺(tái)帳號(hào)
      KAFKA_MANAGER_PASSWORD: 控制臺(tái)密碼
    restart: always

ps.本地環(huán)境為Window10的環(huán)境,所以文件映射的路徑和linux上搭建不一樣,如果搭建在Linux系統(tǒng)或MacOS系統(tǒng),修改映射文件就可以啦。
值得注意的是,如果為了能夠快速將zookeeper和kafka集群搭建起來(lái),建議直接使用以上代碼。因?yàn)楝F(xiàn)在使用最新的zookeeper版本好像會(huì)搭建失敗,具體原因沒(méi)有細(xì)看,看到網(wǎng)上的說(shuō)法是有可能新版本zookeeper鏡像里的文件和之前不太一樣,可能需要修改一些配置才可以,但我的目的是快速搭建環(huán)境學(xué)習(xí)Kafka,就不花那么多時(shí)間研究版本的問(wèn)題...

另外,我還加上kafka-manager服務(wù),這個(gè)是一個(gè)可視化平臺(tái),可以方便的管理kafka節(jié)點(diǎn)的情況,訪問(wèn)地址為:http://localhost:9000 。至于如何操作管理平臺(tái),可參考 kafka-manager使用

使用docker ps命令查看是否搭建成功

查看zookeeper節(jié)點(diǎn)的狀態(tài):

  1. 進(jìn)入zookeeper服務(wù):docker exec -it zookeeper1 /bin/bash
  2. 執(zhí)行 ./bin/zkServer.sh status

由Mode可知,zookeeper1角色是leader,可以依照相似的命令查看其它zookeeper的角色和判斷是否啟動(dòng)成功!

查看kafka節(jié)點(diǎn)的狀態(tài):

  1. 查看kafka啟動(dòng)日志:docker logs -f kafka1
  1. 通過(guò)kafka-manager管理平臺(tái)查看






如果覺(jué)得文章不錯(cuò)的話,麻煩點(diǎn)個(gè)贊哈!對(duì)于文章有哪里不清楚或者有誤的地方,歡迎在評(píng)論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容