一、#創作靈感#
公司使用Kafka的軟件項目較多,故寫技術筆記鞏固知識要點
二、軟件環境
- Kafka 3.9.0? 官方下載地址:Kafka 3.9.0
- ZooKeeper 3.9.3? 官方下載地址:ZooKeeper 3.9.3
- Docker Desktop 4.37 容器圖形化工具? 官方下載地址:Docker Desktop 4.37
特別說明
-?Docker Desktop僅僅是Windows下鏡像用,如有能爬樓的服務器可不安裝此軟件
- 本文以單機模式為例
三、常規方式安裝
非容器化Zookeeper Mode(模式)安裝
1、下載zookeeper
參見上面的軟件環境章節的下載地址
2、修改zookeeper配置
# zk臨時數據目錄,根據實際調整
dataDir=/tmp/zookeeper
# 管理端口,如果一臺機器只啟一個可不配置,啟多個要配置每個zk的管理端口要不同
admin.serverPort=8181
3、啟動內置/外置zookeeper(二選一)
- 啟動內置zookeeper
# Start the ZooKeeper service
$ bin/zookeeper-server-start.sh config/zookeeper.properties
?- 啟動外置zookeeper
# Start the ZooKeeper service
$ bin/zkServer.sh start
5、下載kafka
下載地址見:軟件環境章節
6、修改(zookeeper模式啟動)Kafka配置
vi $KAFKA_HOME/config/server.properties
##### 主要配置如下
# ip 端口,根據實際修改
listeners=PLAINTEXT://10.130.***.**:19092
# 日志文件目錄
log.dirs=/tmp/kafka-logs
# zookeeper地址
zookeeper.connect=localhost:2181
7、Zookeeper模式啟動Kafka
# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties
四、容器方式安裝
容器化Zookeeper Mode(模式)安裝
內置zookeeper和外置zookeeper二選一
1、容器啟動Kafka-內置zk(一體化)方式
- 下載鏡像
下載一體化官方鏡像
$ docker pull confluentinc/cp-kafka:5.5.0
- dockerfile
dockerfile以開源Confluent Kafka為基顧打一個定制化的鏡像
# 使用Kafka官方鏡像
FROM confluentinc/cp-kafka:5.5.0# 設置環境變量以啟用內置的Zookeeper實例
ENV KAFKA_ZOOKEEPER_CONNECT=localhost:2181
ENV KAFKA_BROKER_ID=1
ENV KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
ENV KAFKA_LISTENERS=INTERNAL://:9092,EXTERNAL://:19092
ENV KAFKA_ADVERTISED_LISTENERS=INTERNAL://kafka:9092,EXTERNAL://localhost:19092
ENV KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL
ENV KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1# 復制Kafka配置文件
COPY ./config/ /etc/kafka/config/# 復制Zookeeper配置文件
COPY ./zookeeper.properties /etc/kafka/zookeeper.properties# 復制Kafka配置文件
COPY ./server.properties /etc/kafka/server.properties# 設置容器工作目錄
WORKDIR /etc/kafka# 暴露Kafka和Zookeeper的端口
EXPOSE 2181 9092 19092# 啟動Kafka和Zookeeper
CMD ["start-kafka.sh", "--zookeeper"]
- 使用鏡像啟動容器
# 假設打好的鏡像id是fe7e6a65afa5
docker run \
--name=cp-kafka \
-p 2181:2181 \
-p 9092:9092 \
-p 19092:19092 \
-d fe7e6a65afa5
2、容器啟動Kafka-外置zk
- 下載鏡像
下載Zookeeper和Kafka兩個鏡像
$ docker pull wurstmeister/zookeeper:3.9.3
$ docker pull wurstmeister/kafka:3.9.0
- docker-compose.yml
docker-compose編排zookeeper和kafka兩個鏡像
version: '3'
services:zookeeper:image: wurstmeister/zookeeperports:- "2181:2181"kafka:image: wurstmeister/kafkaports:- "9092:9092"environment:KAFKA_ADVERTISED_HOST_NAME: localhostKAFKA_ZOOKEEPER_CONNECT: zookeeper:2181volumes:- /var/run/docker.sock:/var/run/docker.sock
說明:
? ? 這將會啟動一個Zookeeper和Kafka的容器實例。確保你已經安裝了Docker和Docker Compose。這個配置適用于開發和測試環境,不適合生產環境,因為它將Kafka和Zookeeper暴露到同一個宿主機的端口上,可能會有安全問題
- 使用docker-compose啟動容器
docker-compose up -d
五、要點總結
? ? ? - Zookeeper Mode使用的配置是$KFAKA_HOME/config/server.properties
? ? ? - Kraft?Mode使用的配置是$KFAKA_HOME/config/kraft/server.properties
? ? ? -?Kraft?Mode啟動見作者的文章:Kraft模式安裝Kafka