一、Docker安裝Kafka 3.0
Docker作為一個快速構建、測試和部署應用程序的平台,能夠輕鬆實現Kafka的安裝與配置。總體來說,您需要下載並安裝Docker,然後集成Kafka鏡像。這裡是一個示例:
docker pull bitnami/kafka:latest
在下載Kafka之後,您可以通過以下命令啟動Kafka容器:
docker run --name kafka -e ALLOW_PLAINTEXT_LISTENER=yes -p 9092:9092 -d bitnami/kafka:latest
其中,ALLOW_PLAINTEXT_LISTENER將在Kafak中啟用明文訪問,9092為默認的Kafka端口。運行Kafka容器之後,您可以使用以下命令進入容器:
docker exec -it kafka bash
二、Docker安裝Kafka這些大數據組件
在Docker上安裝Kafka,您需要下載以下組件:
- zookepeer
- Schema-registry
- Kafka-connect
以下是一個啟動包含這些組件的Docker容器的示例:
docker run --name zookeeper -p 2181:2181 -d zookeeper docker run --name schema-registry --link zookeeper:zookeeper -p 8081:8081 -d confluentinc/cp-schema-registry:latest docker run --name connect --link zookeeper:zookeeper --link kafka:kafka -p 8083:8083 -d confluentinc/cp-kafka-connect:latest
三、Docker安裝Kafka修改配置
在Docker容器中啟動Kafka時,您也可以修改默認配置。例如,以下示例顯示了如何使用Docker-compose文件更改Kafka的最大消息大小:
version: '2' services: kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092" KAFKA_MESSAGE_MAX_BYTES: "2000000"
四、Docker安裝Kafka集群數據不同步
在使用Docker安裝Kafka集群時,數據同步是一個重要的問題。為了確保所有Kafka節點都有相同的數據,您需要在創建Kafka容器時使用相同的卷。例如,以下代碼將創建兩個Kafka容器來創建一個Kafka集群:
docker run -d --name kafka1 -p 9092:9092 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -v /kafka/logs:/opt/kafka/logs -v /kafka/data:/opt/kafka/data confluentinc/cp-kafka docker run -d --name kafka2 -p 9093:9093 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -v /kafka/logs:/opt/kafka/logs -v /kafka/data:/opt/kafka/data confluentinc/cp-kafka
請注意,這裡使用了Docker的卷功能。/kafka/data和/kafka/logs是可以在容器內使用的目錄。
五、Docker安裝Kafka集群
如上述示例所示,您可以通過將多個Kafka容器鏈接在一起來創建Kafka集群。這裡是一個創建三節點Kafka集群的示例:
version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka1: image: wurstmeister/kafka restart: unless-stopped ports: - "9092:9094" environment: KAFKA_ADVERTISED_HOST_NAME: kafka1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_BROKER_ID: "1" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2 kafka2: image: wurstmeister/kafka restart: unless-stopped ports: - "9093:9095" environment: KAFKA_ADVERTISED_HOST_NAME: kafka2 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_BROKER_ID: "2" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2 kafka3: image: wurstmeister/kafka restart: unless-stopped ports: - "9094:9096" environment: KAFKA_ADVERTISED_HOST_NAME: kafka3 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_BROKER_ID: "3" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
六、Docker安裝Kafka如何修改配置文件
修改Kafka配置文件的最簡單方法是通過Docker-compose文件。例如,以下代碼顯示了如何更改Kafka的日誌級別:
version: '2' services: kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092" volumes: - /var/run/docker.sock:/var/run/docker.sock - ~/docker/kafka/data:/data - $(pwd)/kafka-log4j.properties:/kafka/config/log4j.properties - $(pwd)/server.properties:/kafka/config/server.properties
請注意,此處將kafka-log4j.properties和server.properties添加到容器中的 ~ / docker / kafka / data 目錄。
七、Docker安裝Kafka無法連接
如果您在安裝Kafka時遇到了連接問題,請檢查您的防火牆配置。在Docker容器中,使用以下代碼開放9092端口:
sudo ufw allow 9092
八、Docker安裝Kafka會遇到的坑
- 請確保在啟動Kafka容器之前已經啟動內部依賴關係(例如zookepeer)。
- 確保使用IP而不是localhost或127.0.0.1充當Kafka的主機名
- 在容器啟動期間等待一段時間。容器可能需要一些時間來啟動並準備就緒。
- 確保Docker和Kafka已經正確卸載。
- 一旦卸載,就可以使用以下代碼進行清理:docker system prune -a。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/189978.html