KafkaLinux本地和Docker安装Kafka

目录

  • Linux本地安装kafka
    • java环境配置
    • Zookeeper的安装配置
    • Kafka的安装与配置
    • 生产与消费
  • Docker安装kafka
    • Zookeeper安装
    • Kafka安装

Linux本地安装kafka

java环境配置

1、上传jdk-8u261-linux-x64.rpm到服务器并安装:

rpm -ivh jdk-8u261-linux-x64.rpm

2、配置环境变量:

vim /etc/profile 1
export JAVA_HOME=/usr/java/jdk1.8.0_261-amd647879 
export PATH=$PATH:$JAVA_HOME/bin
# 生效 
source /etc/profile 
# 验证 
java -version

Zookeeper的安装配置

1、上传zookeeper-3.4.14.tar.gz到服务器

2、解压到/opt:

tar -zxf zookeeper-3.4.14.tar.gz -C /opt
cd /opt/zookeeper-3.4.14/conf 
# 复制zoo_sample.cfg命名为zoo.cfg 
cp zoo_sample.cfg zoo.cfg 
# 编辑zoo.cfg文件 
vim zoo.cfg

3、修改Zookeeper保存数据的目录,dataDir:

dataDir=/var/lagou/zookeeper/data

4、编辑/etc/profile:

  • 设置环境变量ZOO_LOG_DIR,指定Zookeeper保存日志的位置;
  • ZOOKEEPER_PREFIX指向Zookeeper的解压目录;
  • 将Zookeeper的bin目录添加到PATH中:
export Z00KEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$Z00KEEPER_PREFIx/bin
export Z00_L0G_DIR=/var/lagou/zookeeper/log

5、使配置生效:

source /etc/profile

6、验证:

zkServer.sh status

Kafka的安装与配置

1、上传kafka_2.12-1.0.2.tgz到服务器并解压:

tar -zxf kafka_2.12-1.0.2.tgz -C /opt

2、配置环境变量并生效:

vim /etc/profile
export KAFKA_HOME=/opt/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA_HOME/bin

3、配置/opt/kafka_2.12-1.0.2/config中的server.properties文件:

Kafka连接Zookeeper的地址,此处使用本地启动的Zookeeper实例,连接地址是localhost:2181,后面的 myKafka 是Kafka在Zookeeper中的根节点路径:

在这里插入图片描述

4、启动Zookeeper:

zkServer.sh start

5、确认Zookeeper的状态:

在这里插入图片描述

6、启动Kafka:

进入Kafka安装的根目录,执行如下命令:

在这里插入图片描述

启动成功,可以看到控制台输出的最后一行的started状态:

INF0 [KafkaServer id=0] started(kafka.server.KafkaServer)

7、查看Zookeeper的节点:

在这里插入图片描述

8、此时Kafka是前台模式启动,要停止,使用Ctrl+C。

如果要后台启动,使用命令:

kafka-server-start.sh -daemon config/server.properties

查看Kafka的后台进程:

ps aux | grep kafka

停止后台运行的Kafka:

kafka-server-stop.sh

生产与消费

1、kafka-topics.sh 用于管理主题

# 列出现有的主题
kafka-topics.sh --list --zookeeper localhost:2181/myKafka
# 创建主题,该主题包含一个分区,该分区为Leader分区,它没有Follower分区副本
kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topic_1 --partitions 1 --replication-factor 1
# 查看分区信息
kafka-topics.sh --zookeeper localhost:2181/myKafka --list
# 查看指定主题的详细信息
kafka-topics.sh --zookeeper localhost:2181/myKafka -- describe --topic topic_1
# 删除指定主题
kafka-topics.sh --zookeeper localhost:2181/myKafka --delete --topic topic_1

2、kafka-console-producer.sh用于生产消息

# 开启生产者
kafka-console-producer.sh --topic topic_1 --broker-list localhost:9092

3、kafka-console-consumer.sh用于消费消息

# 开启消费者
kafka-console-consumer.sh --bootstrap-server localhost:9092 - -topic topic_1
#  开启消费者方式二,从头消费,不按照偏移量消费
kafka-console-consumer.sh --bootstrap-server localhost:9092 - -topic topic_1 --from-beginning

Docker安装kafka

Zookeeper安装

1、拉取zookeeper 镜像

docker pull zookeeper 

2、运行zookeeper 服务

docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /mydata/zookeeper/data:/data -v /mydata/zookeeper/conf:/conf -v /mydata/zookeeper/logs:/datalog zookeeper

参数:

  • --log-driver json-file:指定日志驱动程序为json-filejson-file是一个日志驱动程序,它将日志记录为JSON格式的文件。
  • --log-opt max-size=100m:设置每个日志文件的最大大小为100MB。当单个日志文件达到这个大小时,Docker会自动开始写入新的日志文件。
  • --log-opt max-file=2:设置最多保留2个日志文件。当达到这个限制时,旧的日志文件会被自动删除,以保留最新的2个日志文件。
  • --name zookeeper:容器名字
  • -p 2181:2181:映射端口
  • -v /mydata/zookeeper/data:/data:挂载Zookeeper的数据目录,存储其运行时数据,包括事务日志和快照
  • -v /mydata/zookeeper/conf:/conf:挂载Zookeeper配置文件
  • -v /mydata/zookeeper/logs:/datalog:挂载Zookeeper的日志文件

日志相关的参数只是测试使用,实际根据需求调整。

本机修改文件路径后:

docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /Users/fltech/docker/zookeeper/data:/data -v /Users/fltech/docker/zookeeper/conf:/conf -v /Users/fltech/docker/zookeeper/logs:/datalog zookeeper

3、验证是否启动成功

进入zookeeper容器

docker exec -it 容器id /bin/bash

找到配置文件位置

cat /conf/zoo.cfg

查看zookeeper状态

zkServer.sh status

显示如下:

Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

说明Zookeeper启动成功,运行模式是单机版。

Kafka安装

1、拉取kafka 镜像

docker pull kafka

2、运行kafka

docker run -d  --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.21:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.21:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -v /mydata/kafka/conf:/opt/kafka/conf -v /mydata/kafka/data:/tmp/kafka-logs -v /mydata/kafka/logs:/logs wurstmeister/kafka

kafka运行时,指定需要的环境变量

  • -e KAFKA_BROKER_ID=0:配置BROKER_ID,默认第一台是0,单机模式下只能是0
  • -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.21:2181/kafka:配置zookeeper的地址及管理kafka的路径,注意IP使用公网地址
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.21:909 :把kafka的地址端口注册给zookeeper
  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 配置kafka的监听端口
  • -v /etc/localtime:/etc/localtime: 容器时间同步虚拟机的时间

挂载文件根据需要:

-v /mydata/kafka/conf:/opt/kafka/conf:挂载配置文件

-v /mydata/kafka/data:/tmp/kafka-logs:挂载数据目录,存储其运行时数据,包括日志文件和元数据

-v /mydata/kafka/logs:/logs:挂载日志

本机修改文件路径后:

docker run -d  --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.21:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.21:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -v /Users/fltech/docker/kafka/conf:/opt/kafka/conf -v /Users/fltech/docker/kafka/data:/tmp/kafka-logs -v /Users/fltech/docker/kafka/logs:/logs wurstmeister/kafka
  1. 验证是否启动成功

进入容器:

docker exec -it kafka1 bash

到保存脚本的目录:

cd /opt/kafka_2.13-2.7.1/bin

创建一个topic:

/opt/kafka_2.13-2.7.1/bin > kafka-topics.sh --create --zookeeper 192.168.1.21:2181/kafka --replication-factor 1 --partitions 1 --topic topicDemo
Created topic topicDemo.

能够成功创建,说明安装成功。