kafka3.5.1(raft版本 sasl認(rèn)證)集群docker部署

Kafka分布式消息隊(duì)列集群,kafka的三個(gè)節(jié)點(diǎn)分別坐落在三臺(tái)主機(jī)上。

主機(jī)

192.168.59.20

192.168.59.21

192.168.59.22

部署kafka集群 kraft模式

目前使用raft模式部署,不需要再依賴zookeeper;采用sasl認(rèn)證,傳輸不加密。(如果非敏感數(shù)據(jù)可以這樣用,如果敏感數(shù)據(jù)還是建議 sasl_ssl 傳輸也加密)

mkdir -p /data/kafka_raft
chmod g+w /data/kafka_raft

命令說明

docker run --detach \
  --net=host \
  --name kafka1 \
  --restart always \
  --volume /data/kafka_raft:/bitnami/kafka \
  --env TZ=Asia/Shanghai \
  --env KAFKA_CFG_PROCESS_ROLES=broker,controller  \ #聲明角色 有了這個(gè)代表使用raft模式
  --env BITNAMI_DEBUG=true  \ #控制臺(tái)打印日志
  --env ALLOW_PLAINTEXT_LISTENER=no  \ #生產(chǎn)環(huán)境不允許
  --env KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER  \ #控制器名稱 對(duì)應(yīng)下面CONTROLLER://:9093
  --env KAFKA_CFG_NUM_PARTITIONS=1 \ #默認(rèn)分區(qū)數(shù)
  --env KAFKA_CFG_LISTENERS=INTERNAL://:9094,CLIENT://:9095,CONTROLLER://:9093,EXTERNAL://:9092 \ #監(jiān)聽器的地址和端口
  --env KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://192.168.59.20:9094,CLIENT://:9095,EXTERNAL://192.168.59.20:9092  \ #發(fā)布監(jiān)聽器的地址和端口
  --env KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT  \ #監(jiān)聽器的協(xié)議 這里sasl_plain表示   僅認(rèn)證加密 傳輸不加密
  --env KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL \ #內(nèi)部broker名稱
  --env KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN \  #協(xié)議
  --env KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN \ #協(xié)議
  --env KAFKA_CLIENT_USERS=vpn \ #加密客戶端賬號(hào)
  --env KAFKA_CLIENT_PASSWORDS=BCfoV77N \ #加密客戶端密碼
  --env KAFKA_INTER_BROKER_USER=vpn \ #內(nèi)部broker之間通信賬號(hào)
  --env KAFKA_INTER_BROKER_PASSWORD=BCfoV77N \ #內(nèi)部broker之間通信密碼
  --env KAFKA_CFG_NODE_ID=1 \ #節(jié)點(diǎn)ID 唯一不一樣
  --env KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@192.168.59.20:9093,2@192.168.59.21:9093,3@192.168.59.22:9093 \ #投票選舉列表
  --env KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv  \ #集群id 大家都一樣
  --env KAFKA_HEAP_OPTS='-Xms512M -Xmx4G' \ #運(yùn)行內(nèi)存參數(shù)
  bitnami/kafka:3.5.1

命令

docker run --detach \
  --net=host \
  --name kafka1 \
  --restart always \
  --volume /data/kafka_raft:/bitnami/kafka \
  --env TZ=Asia/Shanghai \
  --env KAFKA_CFG_PROCESS_ROLES=broker,controller  \
  --env BITNAMI_DEBUG=true  \
  --env ALLOW_PLAINTEXT_LISTENER=no  \
  --env KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER  \
  --env KAFKA_CFG_NUM_PARTITIONS=1 \
  --env KAFKA_CFG_LISTENERS=INTERNAL://:9094,CLIENT://:9095,CONTROLLER://:9093,EXTERNAL://:9092 \
  --env KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://192.168.59.20:9094,CLIENT://:9095,EXTERNAL://192.168.59.20:9092  \
  --env KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT  \
  --env KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL \
  --env KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN \
  --env KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN \
  --env KAFKA_CLIENT_USERS=vpn \
  --env KAFKA_CLIENT_PASSWORDS=BCfoV77N \
  --env KAFKA_INTER_BROKER_USER=vpn \
  --env KAFKA_INTER_BROKER_PASSWORD=BCfoV77N  \
  --env KAFKA_CFG_NODE_ID=1 \
  --env KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@192.168.59.20:9093,2@192.168.59.21:9093,3@192.168.59.22:9093 \
  --env KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv  \
  --env KAFKA_HEAP_OPTS='-Xms512M -Xmx4G' \
  bitnami/kafka:3.5.1
 docker run --detach \
   --net=host \
   --name kafka2 \
   --restart always \
   --volume /data/kafka_raft:/bitnami/kafka \
   --env TZ=Asia/Shanghai \
   --env KAFKA_CFG_PROCESS_ROLES=broker,controller  \
   --env BITNAMI_DEBUG=true  \
   --env ALLOW_PLAINTEXT_LISTENER=no  \
   --env KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER  \
   --env KAFKA_CFG_NUM_PARTITIONS=1 \
   --env KAFKA_CFG_LISTENERS=INTERNAL://:9094,CLIENT://:9095,CONTROLLER://:9093,EXTERNAL://:9092 \
   --env KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://192.168.59.21:9094,CLIENT://:9095,EXTERNAL://192.168.59.21:9092  \
   --env KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT  \
   --env KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL \
   --env KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN \
   --env KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN \
   --env KAFKA_CLIENT_USERS=vpn \
   --env KAFKA_CLIENT_PASSWORDS=BCfoV77N \
   --env KAFKA_INTER_BROKER_USER=vpn \
   --env KAFKA_INTER_BROKER_PASSWORD=BCfoV77N \
   --env KAFKA_CFG_NODE_ID=2 \
   --env KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@192.168.59.20:9093,2@192.168.59.21:9093,3@192.168.59.22:9093 \
   --env KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv  \
   --env KAFKA_HEAP_OPTS='-Xms512M -Xmx4G' \
   bitnami/kafka:3.5.1
   docker run --detach \
     --net=host \
     --name kafka3 \
     --restart always \
     --volume /data/kafka_raft:/bitnami/kafka \
     --env TZ=Asia/Shanghai \
     --env KAFKA_CFG_PROCESS_ROLES=broker,controller  \
     --env BITNAMI_DEBUG=true  \
     --env ALLOW_PLAINTEXT_LISTENER=no  \
     --env KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER  \
     --env KAFKA_CFG_NUM_PARTITIONS=1 \
     --env KAFKA_CFG_LISTENERS=INTERNAL://:9094,CLIENT://:9095,CONTROLLER://:9093,EXTERNAL://:9092 \
     --env KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://192.168.59.22:9094,CLIENT://:9095,EXTERNAL://192.168.59.22:9092  \
     --env KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT  \
     --env KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL \
     --env KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN \
     --env KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN \
     --env KAFKA_CLIENT_USERS=vpn \
     --env KAFKA_CLIENT_PASSWORDS=BCfoV77N \
     --env KAFKA_INTER_BROKER_USER=vpn \
     --env KAFKA_INTER_BROKER_PASSWORD=BCfoV77N \
     --env KAFKA_CFG_NODE_ID=3 \
     --env KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@192.168.59.20:9093,2@192.168.59.21:9093,3@192.168.59.22:9093 \
     --env KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv  \
     --env KAFKA_HEAP_OPTS='-Xms512M -Xmx4G' \
     bitnami/kafka:3.5.1

測試kafka消息隊(duì)列

創(chuàng)建一個(gè)新的topic

docker exec kafka1 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.59.20:9092 --topic test1 --create --partitions 1 --replication-factor 1 --command-config /opt/bitnami/kafka/config/producer.properties

列出所有的topic

docker exec kafka2 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.59.21:9092 --list --command-config /opt/bitnami/kafka/config/producer.properties

打開一個(gè)消費(fèi)者會(huì)話

docker exec -it kafka1 /opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.59.20:9092 --topic test1 --from-beginning --consumer.config /opt/bitnami/kafka/config/consumer.properties

打開一個(gè)生產(chǎn)者會(huì)話

docker exec -it kafka3 /opt/bitnami/kafka/bin/kafka-console-producer.sh --broker-list 192.168.59.22:9092 --topic test1 --producer.config /opt/bitnami/kafka/config/producer.properties

在生產(chǎn)者會(huì)話窗口輸入信息,隨后在消費(fèi)者會(huì)話窗口查看成功收到信息,kafka集群部署成功。

部署kafka-ui

集群監(jiān)控系統(tǒng),可視化圖標(biāo)展示。

  docker run --detach \
  -p 8081:8080 \
  --name kafka-ui \
  --restart always \
  --env KAFKA_CLUSTERS_0_NAME=local \
  --env DYNAMIC_CONFIG_ENABLED=true \
  --env AUTH_TYPE=LOGIN_FORM \
  --env SPRING_SECURITY_USER_NAME=admin \
  --env SPRING_SECURITY_USER_PASSWORD=admin \
  provectuslabs/kafka-ui:master

瀏覽器訪問:http://ip:8081 ,默認(rèn)帳號(hào)密碼:admin admin

進(jìn)入之后添加kafka配置信息,sasl_plaintext plain 賬號(hào) 密碼

[圖片上傳失敗...(image-6af8c6-1709013738736)]

添加圖片注釋,不超過 140 字(可選)

[圖片上傳失敗...(image-9cf22d-1709013738736)]

添加圖片注釋,不超過 140 字(可選)

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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