安装
[JDK] # 临时启动JDK环境 : vim /etc/profile : export JAVA_HOME=/opt/jdk1.8.0_211 && export PATH=$PATH:$JAVA_HOME/bin : java -version[zookeeper] : https://mirrors.cnnic.cn/apache/zookeeper/ # https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz : tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/kafka/zookeeper-3.4.14 # 配置文件 : cp conf/zoo_sample.cfg conf/zoo.cfg # 启动 : ./bin/zkServer.sh start// # 存储快照文件的目录,默认情况下, 事务日志也会存储在该目录// # mkdir -p /data/zk/logs// # dataDir=/data/zk/// # dataLogDir=/data/zk/logs// # 使用 Kafka 内置 Zookeeper// # bin/zookeeper-server-start.sh config/zookeeper.properties[kafka] : http://kafka.apache.org/downloads # https://archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz : tar -zxvf kafka_2.12-2.1.0.tgz -C /opt/kafka/kafka_2.12-2.1.0 : bin/kafka-server-start.sh config/server.properties[环境配置 vim /etc/profile] :KAFKA_HOME ~/.bash_profile export KAFKA_HOME=/opt/kafka/kafka_2.12-2.1.0 export PATH=$PATH:$KAFKA_HOME/bin :source ~/.bash_profile
配置
[配置] # 消费者配置 :consumer.properites # 生产者配置 :producer.properties # 服务器的配置 :server.properties [server.properties] :port=9092 # 内网设置, 设置后只能通过列表中配置访问, 否则默认只能本地访问 : listeners=PLAINTEXT://10.0.0.11:9092 # 外网设置 : advertised.listeners=PLAINTEXT://10.0.0.11:9092[zookeeper.properties] //: 端口2181是ZooKeeper的默认端口[run] :zookeeper # zookeeper-server-start.sh zookeeper.properties :kafka # kafka-server-start.sh -daemon server.properties # -daemon 可选,表示后台启动kafka服务// 关闭防火墙
kafka_2.12-2.2.0.tgz
测试
[测试]
# 创建主题
: kafka-topics.sh --zookeeper 127.0.0.1:2181 \
--create --topic msg-test --partitions 1 --replication-factor 1
# 查看主题信息
: kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
: kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe
# 创建生产者
: kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic msg-test
# 创建消费者
: kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 \
--topic msg-test --from-beginning
kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --group test --describe
# 查询消费者信息
: kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list --all-topics
: kafka-consumer-groups.sh \
--bootstrap-server 127.0.0.1:9092 --group console-consumer-51108 --describe
install & docker
[安装]
: docker pull centos:7
: docker run \
--name xk_zk_kafka \
-p 2181:2181 \
-p 9092:9092 \
-d -it centos:7
--privileged=true --net=host
//-v /vdb/zk_kafka/db/:/data/db/
: docker cp jdk-8u261-linux-x64.tar.gz xk_zk_kafka:/opt/
: docker cp zookeeper-3.4.14.tar.gz xk_zk_kafka:/opt/
: docker cp kafka_2.12-2.2.0.tgz xk_zk_kafka:/opt/
: docker exec -it xk_zk_kafka /bin/bash
// - yum install update
// -
// - mkdir -p /usr/local/zkkafka
// - tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local/zkkafka/
// - tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/zkkafka/
// - tar -zxvf kafka_2.12-2.2.0.tgz -C /usr/local/zkkafka/
// 配置环境
// 容器中必须配置
// listeners=PLAINTEXT://0.0.0.0:9092
// advertised.listeners=PLAINTEXT://192.168.0.122:9092
: vim /etc/profile
: source /etc/profile
export JAVA_HOME=/usr/local/zkkafka/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin
export KAFKA_HOME=/usr/local/zkkafka/kafka_2.12-2.2.0
export PATH=$PATH:$KAFKA_HOME/bin
export ZK_HOME=/usr/local/zkkafka/zookeeper-3.4.14
export PATH=$PATH:$ZK_HOME/bin
[运行]
[打包镜像]
# 提交容器为镜像
: docker commit -m="zk:3.4.14,kafka:2.12-2.2.0" -a="xknower" xk_zk_kafka xk_zk_kafka:1
# 保存
: docker save xk_zk_kafka:1 | gzip > xk_zk_kafka_1.tar.gz
// docker export xk_zk_kafka | gzip > xk_zk_kafka_1_ex.tar.gz
# 导入
: gunzip -c xk_zk_kafka_1.tar.gz | docker load
// gunzip -c xk_zk_kafka_1.tar.gz | docker import
docker run \
--name zk_kafka \
--privileged=true --net=host \
-p 2181:2181 \
-p 9092:9092 \
-d -it xk_zk_kafka:1
[]
> docker pull wurstmeister/zookeeper:3.4.6
: docker run --name zookeeper -p 2181:2181 -t -d wurstmeister/zookeeper
> docker pull wurstmeister/kafka:2.12-2.2.0
: docker run -d \
--name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.119.130:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.119.130:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-t wurstmeister/kafka \
--privileged=true --net=host \