準備兩臺虛擬機
192.168.155.44? ?安裝zookeeper辆憔、kafka
192.168.155.46? 安裝kafka
1:在192.168.155.44 虛擬機上,kafka需要zookeeper管理,所以需要先安裝zookeeper。 下載docker pull wurstmeister/zookeeper:latest版本
docker pull wurstmeister/zookeeper
2:啟動鏡像生成容器
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
3:下載kafka鏡像
docker pull wurstmeister/kafka
4:啟動kafka鏡像生成容器
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.44:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.44:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
-e KAFKA_BROKER_ID=0? 在kafka集群中,每個kafka都有一個BROKER_ID來區(qū)分自己
-e KAFKA_ZOOKEEPER_CONNECT=192.168.155.44:2181/kafka 配置zookeeper管理kafka的路徑192.168.155.44:2181/kafka
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.44:9092? 把kafka的地址端口注冊給zookeeper
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092?配置kafka的監(jiān)聽端口
-v /etc/localtime:/etc/localtime 容器時間同步虛擬機的時間
5:創(chuàng)建一個topic測試下看kafka是否正常運行
進入容器:
docker exec -it kafka /bin/sh
cd opt/bin
運行語句:
kafka-topics.sh --create --topic test --zookeeper 192.168.155.44:2181/kafka --replication-factor 2 --partitions 2
報錯奋姿,因為我只建立了一個kafka容器,建立不出來兩個replication-factor 2
運行語句:
kafka-topics.sh --create --topic test --zookeeper 192.168.155.44:2181/kafka --replication-factor 1 --partitions 2
查看topic的詳細信息:
kafka-topics.sh --describe --zookeeper 192.168.155.44:2181/kafka --topic test
可以看到建立的兩個分區(qū)都在BROKER_ID=0這個節(jié)點上
6:在192.168.155.46虛擬機上再安裝一個kafka容器素标。
運行容器:
docker run -d --name kafka -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.44:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.44:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -v /etc/localtime:/etc/localtime wurstmeister/kafka
其中需要注意:
1)端口我修改成了9093:9093
2)KAFKA_BROKER_ID從0修改成了1??KAFKA_BROKER_ID=1
3)后面的鏈接端口都是9093
啟動成功后称诗,kafka集群就已經(jīng)搭建完成了
7:測試集群功能
進入kafka容器,進入44或46的kafka容器都可以头遭,我進入的是44的kafka容器
運行語句
kafka-topics.sh --create --topic test1 --zookeeper 192.168.155.44:2181/kafka --replication-factor 2 --partitions 2
這時用--replication-factor 2已經(jīng)不報錯了寓免。
查詢topic=test1的詳細信息:
kafka-topics.sh --describe --zookeeper 192.168.155.44:2181/kafka --topic test1
可以看到1個分區(qū)在BROKER_ID=0上,一個分區(qū)在BROKER_ID=1上计维。說明kafka集群已經(jīng)搭建成功袜香。
我們把46的kafka容器關閉掉
docker stop kafka
再在44的kafka容器中查看topic=test1的詳細信息:
kafka-topics.sh --describe --zookeeper 192.168.155.44:2181/kafka --topic test1
我們可以發(fā)現(xiàn),兩個分區(qū)對應的節(jié)點都指向了BROKER_ID=0鲫惶,實現(xiàn)了高可用蜈首。
8:介紹下docker-compose的安裝,kafka集群也可以用docker-compose啟動
docker-compose可以管理docker的容器啟動欠母,感興趣的小伙伴可以自行上網(wǎng)學習下
1:先安裝docker-compose
pip -V
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
pip -V
pip install docker-compose
docker-compose -version
安裝docker-compose完成欢策,版本是1.23.2
-----------------------以后補充docker-compose啟動kafka集群文檔