Docker快速搭建Kafka 1.x叢集
Kafka已經發布了1.0版,為了緊跟時代的步伐,最近學習了《Kafka權威指南》。書如其名,這本 Definitive Guide 內容很全面,從Kafka的設計原理和架構細節到開發的程式碼例項進行了全方位的覆蓋。正如本書的前言所述,不管你作為開發工程師圍繞Kafka API來寫應用還是作為運維工程師(SRE)來安裝、配置、調優、監控,本書都提供了足夠的細節。
為何用Docker
我讀本書主要還是從開發的角度來看的,所以對我而言,以最快的速度搭建起一個可以執行的環境最為重要。這個時候首先想到的當然是Docker(不熟悉Docker的可以參見拙作 離不開的工具之《Docker開發指南》)了。
本書第2章的安裝環境是Linux,在附錄中介紹了在Windows和Mac OS上的安裝過程。我之所以選擇用Docker進行安裝,主要是出於以下的考慮:
(1)實現開發環境和生產環境的一致性,這點本書附錄中也提到了:
在桌面作業系統上進行 Kafka 開發或測試時,最好能夠讓它執行在虛擬機器裡,這個虛擬機器最好能與生產環境的配置相匹配。
(2)使用Docker便於模擬多節點叢集,使用docker-compose 工具,我們可以輕鬆的在單臺開發機上啟動多個Kafka容器、zookeeper容器,非常方便的實現了對分散式環境的模擬。
(3)安裝、啟動非常迅速。從安裝上講,在國內如果使用國內的Docker Registry Mirror,下載一個配置好的Kafka映象可能要比直接下載安裝Kafka還要快得多。熟悉Docker的都比較清楚,容器的快速啟動本身就是Docker的一大特色。
Docker映象選型
對比起RabbitMQ有不斷更新的官方Docker映象,Kafka是沒有官方 Docker映象的,所以要麼自己寫一個Dockerfile,要麼用第三方已經構建好的。首先,自己寫一個Dockerfile不是不可以,但不符合我要“最快”的目標,所以用第三方已經構建好的映象那是最快的。其次,映象最好是1.x的最新版本,有新版本就要用上嘛。最後,由於是第三方映象,希望已經用過的人越多越好,這樣坑相對會比較少一些。
帶著上面三個要求,開始尋找合適的第三方映象,比較出名的有以下幾個:
- wurstmeister/kafka 特點:star數最多,版本更新到 Kafka 1.0 ,zookeeper與kafka分開於不同映象。
- spotify/kafka 特點:star數較多,有很多文章或教程推薦,zookeeper與kafka置於同一映象中;但kafka版本較老(還停留在0.10.1.0)。
- confluent/kafka 背景:Confluent是書中提到的那位開發Kafka的Jay Kreps 從LinkedIn離職後創立的新公司,Confluent Platform 是一個流資料平臺,圍繞著Kafka打造了一系列產品。特點:大咖操刀,文件詳盡,但是也和Confluent Platform進行了捆綁。
上述三個專案中,最簡單的是spotify/kafka,但是版本較老。confluent/kafka 資料最為詳盡,但是因為與Confluent Platform做了捆綁,所以略顯麻煩。最終選定使用wurstmeister/kafka,star最多,版本一直保持更新,用起來應該比較放心。
安裝過程
此處假定讀者已經熟練使用docker、docker-compose等工具,所以關於docker的知識就不再贅述。
下載zookeeper映象:
docker pull wurstmeister/zookeeper
下載kafka映象:
docker pull wurstmeister/kafka
在自己選的目錄下建立一個docker-compose.yml檔案, 內容如下:
⚠️ 注意上述內容與 https://github.com/wurstmeister/kafka-docker/blob/master/docker-compose.yml 中有一處區別,即倒數第4行中的 KAFKA_ADVERTISED_HOST_NAME 改為 KAFKA_ADVERTISED_LISTENERS ,其後的ip地址使用宿主機上的 docker-machine ip 地址。
啟動docker-compose
docker-compose up -d
啟動多個kafka 節點,比如3個
docker-compose scale kafka=3
可用性測試
自此,如果沒有出現什麼錯誤,通過docker ps 應該可以看到已經成功啟動了一個zookeeper容器,三個Kafka容器。
通過指定容器名(假設容器名為 wurkafka_kafka_1)進入一個Kafka容器:
docker exec -it wurkafka_kafka_1 /bin/bash
建立一個topic(其中假設zookeeper容器名為 wurkafka_zookeeper_1,topic名為test),輸入:
$KAFKA_HOME/bin/kafka-topics.sh --create --topic test \
--zookeeper wurkafka_zookeeper_1:2181 --replication-factor 1 --partitions 1
檢視新建立的topic:
$KAFKA_HOME/bin/kafka-topics.sh --zookeeper wurkafka_zookeeper_1:2181 \
--describe --topic test
釋出訊息: (輸入若干條訊息後 按^C 退出釋出)
$KAFKA_HOME/bin/kafka-console-producer.sh --topic=test \
--broker-list wurkafka_kafka_1:9092
接收訊息:
$KAFKA_HOME/bin/kafka-console-consumer.sh \
--bootstrap-server wurkafka_kafka_1:9092 \
--from-beginning --topic test
如果接收到了釋出的訊息,證明整個部署正常,就可以正式開始開發工作了。
相關文章
- 用 Docker 快速搭建 Kafka 叢集DockerKafka
- Mac 使用 docker 搭建 kafka 叢集 + Zookeeper + kafka-managerMacDockerKafka
- 【Kafka】Kafka叢集搭建Kafka
- kafka叢集搭建Kafka
- zookeeper叢集及kafka叢集搭建Kafka
- Kafka學習之(五)搭建kafka叢集之Zookeeper叢集搭建Kafka
- Kafka 叢集搭建 (自用)Kafka
- 快速安裝 kafka 叢集Kafka
- 用 docker 快速搭建 kafka(qbit)DockerKafka
- Kafka學習之(六)搭建kafka叢集Kafka
- Docker Swarm 叢集搭建DockerSwarm
- Docker搭建ELK叢集Docker
- docker搭建mysql叢集DockerMySql
- Docker搭建Redis叢集DockerRedis
- Docker 搭建叢集 MongoDBDockerMongoDB
- kafka-2.11叢集搭建Kafka
- 使用docker 搭建rabbitmq 叢集DockerMQ
- Docker Swarm 叢集搭建教程DockerSwarm
- Docker swarm叢集搭建教程DockerSwarm
- docker搭建consul叢集Docker
- 快速搭建Jenkins叢集Jenkins
- 【GP】快速搭建gp叢集
- 使用 Docker 快速搭建單機版的 Kubernetes 叢集Docker
- 使用Docker Swarm快速搭建與部署你的服務叢集DockerSwarm
- Zookeeper叢集 + Kafka叢集Kafka
- Docker Swarm 叢集搭建實踐DockerSwarm
- Docker Redis 5.0 叢集(cluster)搭建DockerRedis
- Docker + Swarm + etcd 叢集搭建DockerSwarm
- linux搭建kafka叢集,多master節點叢集說明LinuxKafkaAST
- docker下,極速搭建spark叢集(含hdfs叢集)DockerSpark
- 用Docker搭建RabbitMq的普通叢集和映象叢集DockerMQ
- Kafka叢集搭建及必知必會Kafka
- 從 0 開始使用 Docker 快速搭建 Hadoop 叢集環境DockerHadoop
- Docker Swarms 跨主機叢集搭建DockerSwarm
- Docker 容器搭建及 Redis 叢集原理DockerRedis
- Elasticsearch使用系列-Docker搭建Elasticsearch叢集ElasticsearchDocker
- linux shell快速搭建NSQ叢集Linux
- Hadoop-2.7.4 叢集快速搭建Hadoop