天天看點

linux使用spotify/kafka 鏡像docker部署 Kafka

Kafka 簡介

作為一個消息中間件,Kafka 以高擴充性、高吞吐量等特點,在網際網路項目中被廣泛采用。

Kafka 中文文檔:https://kafka.apachecn.org/

kafka 安裝包:http://kafka.apache.org/downloads

部署 Kafka

使用 Docker 快速部署一個簡單的 Kafka 服務

1.下載下傳 kafka 的 docker 鏡像:

docker pull spotify/kafka

注意: kafka 依賴 zookeeper 服務,而 spotify/kafka 裡面內建好了 zookeeper 與 kafka,實作了一鍵啟動。

檢視docker鏡像:docker images

[email protected]:~# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
spotify/kafka        latest              a9e0a5b8b15e        4 years ago         443MB
           

2.在 docker 中啟動 kafka 服務:

docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=127.0.0.1 --env ADVERTISED_PORT=9092 spotify/kafka

注意:127.0.0.1 是linux 系統的IP

檢視docker容器:docker ps -a

[email protected]:~# docker ps -a
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                      PORTS                                                                                       NAMES
f06c576bb562        spotify/kafka        "supervisord -n"         4 hours ago         Up 18 minutes               0.0.0.0:2181->2181/tcp, 0.0.0.0:9092->9092/tcp                                              kafka
           

3.檢視kafka啟動日志:

docker logs -f --tail 200  kafka

若出現如下資訊,即啟動成功!

linux使用spotify/kafka 鏡像docker部署 Kafka

若出現如下資訊:

linux使用spotify/kafka 鏡像docker部署 Kafka

出現kafka entered FATAL state, too many start retries too quickly這個錯誤是因為:

kafka啟動參數的記憶體配置太大了。這裡我之前設定的是1G,太大了,更改小一點即可。

進入到kafka容器内,找到kafka-server-start.sh檔案的所在目錄下,執行指令如下:vim kafka-server-start.sh 

linux使用spotify/kafka 鏡像docker部署 Kafka

我們在建立基礎容器之後,進入容器,進行編輯配置檔案的時候,需要使用vim或者vi指令,但是會出現:

[email protected]:/opt/kafka_2.11-0.10.1.0/bin# vim kafka-server-start.sh  
bash: vim: command not found
           

這是因為vim沒有安裝。使用如下指令安裝:

apt-get update 
apt-get install vim
           
vim kafka-server-start.sh 


if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"
fi
           

修改配置後,重新開機kafka,docker restart kafka

4.執行 kafka 的生産端、消費端程式,檢視運作效果:

   #視窗1 生産端

   生産端發消息,進入到kafka容器内,找到kafka-console-producer.sh 檔案的所在目錄下,指令行示範如下:

   ./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test3

[email protected]:~# docker exec -it kafka /bin/bash
[email protected]:/# cd /opt/kafka_2.11-0.10.1.0/bin/
[email protected]:/opt/kafka_2.11-0.10.1.0/bin# ls
connect-distributed.sh  kafka-console-consumer.sh         kafka-mirror-maker.sh                kafka-replica-verification.sh   kafka-streams-application-reset.sh  zookeeper-security-migration.sh
connect-standalone.sh   kafka-console-producer.sh         kafka-preferred-replica-election.sh  kafka-run-class.sh              kafka-topics.sh                     zookeeper-server-start.sh
hs_err_pid3002.log      kafka-consumer-groups.sh          kafka-producer-perf-test.sh          kafka-server-start.sh           kafka-verifiable-consumer.sh        zookeeper-server-stop.sh
kafka-acls.sh           kafka-consumer-offset-checker.sh  kafka-reassign-partitions.sh         kafka-server-stop.sh            kafka-verifiable-producer.sh        zookeeper-shell.sh
kafka-configs.sh        kafka-consumer-perf-test.sh       kafka-replay-log-producer.sh         kafka-simple-consumer-shell.sh  windows
[email protected]:/opt/kafka_2.11-0.10.1.0/bin# ./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test3
{"key":"鍵","value":"值","name":"測試kafka","describe":"發送kafka消息"}
           

  #視窗2 消費端

   消息端收消息,進入到kafka容器内,找到kafka-console-consumer.sh 檔案的所在目錄下,指令行示範如下:

   ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test3 --from-beginning

[email protected]:~# docker exec -it kafka /bin/bash
[email protected]:/# cd /opt/kafka_2.11-0.10.1.0/bin/
[email protected]:/opt/kafka_2.11-0.10.1.0/bin# ls
connect-distributed.sh  kafka-console-consumer.sh         kafka-mirror-maker.sh                kafka-replica-verification.sh   kafka-streams-application-reset.sh  zookeeper-security-migration.sh
connect-standalone.sh   kafka-console-producer.sh         kafka-preferred-replica-election.sh  kafka-run-class.sh              kafka-topics.sh                     zookeeper-server-start.sh
hs_err_pid3002.log      kafka-consumer-groups.sh          kafka-producer-perf-test.sh          kafka-server-start.sh           kafka-verifiable-consumer.sh        zookeeper-server-stop.sh
kafka-acls.sh           kafka-consumer-offset-checker.sh  kafka-reassign-partitions.sh         kafka-server-stop.sh            kafka-verifiable-producer.sh        zookeeper-shell.sh
kafka-configs.sh        kafka-consumer-perf-test.sh       kafka-replay-log-producer.sh         kafka-simple-consumer-shell.sh  windows
[email protected]:/opt/kafka_2.11-0.10.1.0/bin# ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test3 --from-beginning
{"key":"鍵","value":"值","name":"測試kafka","describe":"發送kafka消息"}
           

繼續閱讀