docker kafka 集群搭建實戰
在一台騰訊雲主機的docker環境里搭建3個broker的kafka集群,所有步驟都已測試通過~~ ,另外還有LEADER_NOT_AVAILABLE 異常解決方法。
#創建集群目錄
mkdir/opt/cluster/kafka
cd/opt/cluster/kafka
#清理臟數據【可跳過】
docker rm-f kafka-9093
docker rm-f kafka-9094
docker rm-f kafka-9095
docker ps-a
#下載docker kafka鏡像
docker searchkafka
docker pulldocker.io/wurstmeister/kafka
docker images
#kafka鏡像dockfile文件中查看KAFKA_HOME變數和啟動腳本文件start-kafka.sh
https://hub.docker.com/r/wurstmeister/kafka/~/dockerfile/
#kafka鏡像啟動腳本start-kafka.sh中 查看-e參數列表
https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh
#查看kafka容器config目錄結構【exit退出容器】
docker run-it wurstmeister/kafka /bin/bash
#查看容器名
docker ps-a
#從容器複製config目錄配置文件到宿主機
docker cpwizardly_pasteur:/opt/kafka/config config_tmpl
#修改配置,【id,埠,logdir,內存大小,zk集群】
sed-r -i "s/(broker.id)=(.*)/1=$/g" config_tmpl/server.properties
sed-r -i "s/(log.dirs)=(.*)/1=/var/logs/g" config_tmpl/server.properties
sed-r -i "s/(log.segment.bytes)=(.*)/1=209715200/g" config_tmpl/server.properties
sed-r -i "s/(zookeeper.connect)=(.*)/1=123.*.*.*:2181,123.*.*.*:2182,123.*.*.*:2183/g" config_tmpl/server.properties
cat>>config_tmpl/server.properties
#appender config
advertised.host.name=kafka$
delete.topic.enable=true
HERE
#編輯配置
vimconfig_tmpl/server.properties
------------------- 修改如下 ------------------
listeners=PLAINTEXT://123.*.*.*:$
advertised.listeners=PLAINTEXT://123.*.*.*:$
#生成conf和log目標,並生成配置信息
forportin`seq 9093 9095`;do
mkdir$
&&cp-r config_tmpl $/config
&& BID=$[$port-9092] PORT=$envsubst ./$/config/server.properties
&&mkdir-p ./$/logs;
done
#創建3個kafka容器
forportin`seq 9093 9095`;do
docker run-d --restart always -h kafka$ --name kafka-$ -e HOST_IP=123.*.*.*
-e KAFKA_ADVERTISED_HOST_NAME=kafka$
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka$:$
-e KAFKA_ADVERTISED_PORT=$
-e KAFKA_BROKER_ID=$[$port-9092]
-e KAFKA_LISTENERS=PLAINTEXT://kafka$:$
-e KAFKA_ZOOKEEPER_CONNECT=123.*.*.*:2181,123.*.*.*:2182,123.*.*.*:2183
-e KAFKA_LOG_DIRS=/var/logs
-e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
-v /opt/cluster/kafka/$/config:/opt/kafka/config
-v /opt/cluster/kafka/$/logs:/var/logs
-p $:$ -t wurstmeister/kafka ;
done
#首次創建容器運行,或者當kafka生產者和消費者出現LEADER_NOT_AVAILABLE 異常時,刪除zk topics和各broker的logs下所有文件。
#步驟一:停止所有broker容器
docker stopkafka-9093
docker stopkafka-9094
docker stopkafka-9095
#步驟二:刪除zk topics
docker run-it --rm zookeeper zkCli.sh -server 123.*.*.*:2181,123.*.*.*:2182,123.*.*.*:2183
rmr/brokers/topics
#步驟三:刪除各broker的logs下所有文件
rm-rf 909*/logs/*
#步驟四:啟動所有broker容器
docker startkafka-9093
docker startkafka-9094
docker startkafka-9095
========================================================
#創建主題
docker exec-it kafka-9093 /opt/kafka/bin/kafka-topics.sh --zookeeper 123.*.*.*:2181,123.*.*.*:2182,123.*.*.*:2183
--create --topic fhw7 --partitions 3 --replication-factor 1 ;
#創建消費者
docker exec-it kafka-9093 /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 123.*.*.*:9093,123.*.*.*:9094,123.*.*.*:9095
--topic fhw7 ;
#另打開新shell終端,創建生產者
docker exec-it kafka-9093 /opt/kafka/bin/kafka-console-producer.sh --broker-list 123.*.*.*:9093,123.*.*.*:9094,123.*.*.*:9095
--topic fhw7 ;
※傢具電子商行業常見違法行為,花5分鐘看懂就可以少掉坑了!
※「你還記得,當年大明湖畔的何書桓嗎?」
TAG:全球大搜羅 |