文章目录
- 安装
-
- 1.安装Zookeeper
- 2.安装kafka
- 3.创建zookeeper容器
- 4.创建kafka容器
- 5.测试kafka
- [6.退出bash shell](#6.退出bash shell)
- Zookeeper服务启动
-
- 1.首先找到Zookeeper安装路径
- [2.执行./zkServer.sh start](#2.执行./zkServer.sh start)
- 3.查看运行状态
- 3.集群配置(可不阅)
- 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
成功效果图
生产者
消费者
成功啦!!!!