【Linux】Docker安装kafka教程(超详细保姆篇)

文章目录

更多相关内容可查看

注:本篇默认已有服务器或虚拟机,并已安装Docker

若虚安装Docker请移步【CentOS7】Linux安装Docker教程(保姆篇)

安装

1.安装Zookeeper

在 Apache Kafka 中,ZooKeeper 主要用于以下几个方面:

  • 保存和管理 Kafka 集群的元数据信息。例如,Kafka 集群中的 Broker 信息、Topic 和 Partition
    的信息、Consumer 的偏移量信息等。
  • Kafka 集群的选举服务。当 Kafka 集群中的某个或某些 Broker 宕机时,ZooKeeper 可以协助 Kafka
    集群选举出新的 Leader Broker。
  • Kafka 集群的状态监控。ZooKeeper 可以监控 Kafka 集群中各个 Broker 的在线状态,并及时通知 Kafka
    集群进行相应的处理。

因此,如果你要在 Docker 中运行 Kafka,你也需要运行 ZooKeeper。

bash 复制代码
docker pull wurstmeister/zookeeper

安装成功效果图

2.安装kafka

bash 复制代码
docker pull wurstmeister/kafka

成功效果图

3.创建zookeeper容器

bash 复制代码
docker run -d --name zookeeper -p 2181 -t wurstmeister/zookeeper

成功效果图

4.创建kafka容器

bash 复制代码
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest

成功效果图

5.测试kafka

bash 复制代码
docker exec -it kafka /bin/bash

解析命令:

  • docker exec:这是Docker的一个命令,用于在运行的Docker容器中执行命令。
  • -it:这是两个选项的组合。-i 选项让Docker的输入保持打开,-t 选项让Docker分配一个伪终端(pseudo-tty)。
  • kafka:这是你要在其中执行命令的Docker容器的名称。
  • /bin/bash:这是你要在Docker容器中执行的命令。在这个例子中,你是在打开一个bash shell。

成功效果图

6.退出bash shell

bash 复制代码
exit

成功效果图

Zookeeper服务启动

1.首先找到Zookeeper安装路径

bash 复制代码
find / -name kafka-topics.sh

成功效果图

2.执行./zkServer.sh start

如果出现最后一行则表示启动成功,但是会发现找不到zoo.cfg文件,如果不报这个可以直接跳过

bash 复制代码
./zkServer.sh start

成功效果图

进入安装zookeeper的config文件

bash 复制代码
cd /var/lib/docker/overlay2/80f2f1635bed9db5db5e5697053485db509c413aef6a5a6a3264330a7f53e8b4/diff/opt/zookeeper-3.4.13/conf/

将里面的zoo_xxx.cfg文件更名为zoo.cfg就可以了,当然也可以去改启动文件这里就不详细展开了

可看以下最后启动成功效果图

3.查看运行状态

该状态显示:以standalone模式运行。standalone模式意味着你只运行了一个Zookeeper服务器实例,而不是一个Zookeeper集群

bash 复制代码
./zkServer.sh status

3.集群配置(可不阅)

如果你需要运行一个Zookeeper集群,你需要在zoo.cfg配置文件中添加更多的server.X参数,并且为每个Zookeeper服务器实例指定一个唯一的ID。

然而,如果你只是在本地进行测试或者开发,standalone模式应该就足够了。现在你可以开始启动你的Kafka服务了。

kafka服务启动

1.进入kafka的config目录

如果不知道自己的kafka的安装路径,执行以下命令查找

bash 复制代码
find / -name kafka-topics.sh

成功效果图

进入到你查出来的kafka-topics.sh路径的上一个bin路径在进入config目录

bash 复制代码
cd /var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/config
ll

成功效果图

2.修改server.properties

找到config文件下的server.properties并进行修改端口,保存

3.执行kafka-server-start.sh 命令

我这里为了保险起见,用的是kafka-server-start.sh 的全路径,跟server.properties的全路径

bash 复制代码
/var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/bin/kafka-server-start.sh /var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/config/server.properties

成功示例

4.测试zookeeper跟kafka是否启动成功

QuorumPeerMain为zookeeper服务

Kafka为kafka服务

bash 复制代码
jps

生产消费示例(可不阅)

1.到kafka的bin目录下创建一个主题

bash 复制代码
./kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mykafka 
# --create 创建一个主题
# --zookeeper 连接zookeeper
# --replication-factor kafka副本数
# --partitions kafka分区数
# --topic mykafka 主题名称

成功示例

kafka启动成功但是无法连接zookeeper解决

1.进入/etc/hosts 加上最后一行,192.168.x.x zookeeper。代表将将主机名映射到IP地址

2.检查zookeeper连接是否是本地,并重新试一下

2.启动一个生产者,指定topic为刚刚创建的主题mykafka

bash 复制代码
/kafka-verifiable-producer.sh --broker-list localhost:9092 --topic mykafka 

如果这个命令报找不到kafka-verifiable-producer.sh,但是你发现当前路径有这个kafka-verifiable-producer.sh,那就用全路径重新执行,你的全路径在上文已经find过了

bash 复制代码
/var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka

成功示例

3.重新打开一个连接页面到bin目录下启动一个消费者

bash 复制代码
./kafka-console-consumer.sh --topic mykafka --bootstrap-server 192.xxx.xxx.xxx:9092

以上同理如果找不到则使用全路径

bash 复制代码
/var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/bin/kafka-console-consumer.sh --topic mykafka --bootstrap-server 192.168.xxx.xxx:9092

如果配置文件配置的localhost,则使用进行测试

bash 复制代码
./kafka-console-consumer.sh --topic mykafka --bootstrap-server localhost:9092

成功效果图

生产者

消费者

成功啦!!!!

相关推荐
MonkeyKing_sunyuhua8 分钟前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林39 分钟前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€2 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘2 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
hjjdebug2 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯2 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
斑布斑布2 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
Spring_java_gg2 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
✿ ༺ ོIT技术༻2 小时前
Linux:认识文件系统
linux·运维·服务器