zookeeper、kafka环境配置

本文详细介绍了在Linux环境下安装Zookeeper和Kafka的步骤,包括解决Zookeeper启动报错问题,配置Kafka允许外网连接,并提供了创建Topic和发送消息的操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装 Zookeeper

由于 Kafka 需要依赖 ZooKeeper,因此首先需要准备 ZooKeeper 环境。
1.安装配置
(1)首先我们访问 ZooKeeper 的官网(http://mirror.bit.edu.cn/apache/zookeeper/)下载合适的版本。
ZooKeeper安装并启动成功后,连接报错:
Could not find or load main class org.apache.zookeeper.ZooKeeperMain
解决方案:
3.5.x版本之后,应下载 apache-zookeeper-x.x.x-bin.tar.gz ,而不是 apache-zookeeper-x.x.x.tar.gz
在这里插入图片描述
下载 apache-zookeeper-3.6.1.tar.gz 版本后,虽然可以安装并启动成功,但客户端命令 ./zkCli.sh 报错。下载 apache-zookeeper-3.6.1-bin.tar.gz 就没有问题。当然也可以降低版本到3.4版本。
(2)这里我们下载 3.6.1 版本的apache-zookeeper-3.6.1-bin.tar.gz
执行如下命令解压安装包:

tar -xvf apache-zookeeper-3.6.1-bin.tar.gz

(3)接着创建 ZooKeeper 数据文件存放目录、以及日志存放目录(路径随意,后面会用到):

mkdir -p /root/zookeeper/tmp
mkdir -p /root/zookeeper/log

(4)接着进入 conf 文件夹,执行如下命令复制 zoo 文件:

cp zoo_sample.cfg zoo.cfg

(5) 编辑 zoo.cf 文件:

vim zoo.cfg

在zoo.cfg里配置数据文件目录、以及日志目录,然后保存退出。(ZooKeeper 默认端口为 2181,如果有端口冲突或者需要改用其他端口可以修改 clientPort 配置):
在这里插入图片描述
2.启动运行
(1)进入 bin 目录后执行如下命令启动 ZooKeeper 服务:

./zkServer.sh start

(2)启动后执行如下命令则可查看 ZooKeeper 状态:

./zkServer.sh status

(3)下面表示单机模式的 ZooKeeper 启动成功:
在这里插入图片描述
3.解决Zookeeper出现:
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain问题
(1)安装maven及解压

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz

(2)添加环境变量

vim /etc/profile

在profile中末尾加入:
export MAVEN_HOME=/usr/local/maven-3.6.3
export PATH=PATH:JAVA_HOME/bin:$MAVEN_HOME/bin

(3)重新加载环境变量

source /etc/profile

(4)查看是否安装成功

mvn -v

(5)重新编译zookeeper代码即可

cd /usr/local/zookeeper
cd /zookeeper-server
mvn package -Dmaven.test.skip=true

二、安装Kafka

1.首先我们从官网上下载安装包,地址如下:http://kafka.apache.org/downloads.html
以kafka_2.12-2.2.2为例:

wget http://mirror.bit.edu.cn/apache/kafka/2.2.2/kafka_2.12-2.2.2.tgz

2.下载执行如下命令进行解压:

tar zxvf kafka_2.12-2.2.2.tgz 

3.目录信息
由于 Kafka 的设计中依赖了 ZooKeeper,所以我们在 bin 和 config 目录中除了看到 Kafka 相关的内容之外,还有 ZooKeeper 相关的内容:
bin 目录中存放了 Kafka 和 ZooKeeper 的命令行工具,bin 根目录下存放的是适用于 Linux/UNIX 的 shell,而 bin/windows 下存放的则是适用于 Windows 下的 bat。
config 目录,则用来存放关于 Kafka 与 ZooKeeper 的配置信息。

4.编辑 config 文件夹下的配置文件 server.properties,修改如下两行默认配置,使得可通过外网连接服务器 Kafka(如果不需要从外部连接,只是通过 localhost 本地连接,则不用修改):
在这里插入图片描述
5.最后进入 bin 目录执行如下命令启动 Kafka(启动命令需要指定 Karfka 配置文件的位置):

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

启动后可以通过 jps 命令检查是否启动成功,如出现图表示启动成功:
在这里插入图片描述
QuorumPeerMain是zookeeper集群的启动入口类,是用来加载配置启动QuorumPeer线程的。

三、执行命令
1.创建查看 Topic
(1)我们执行如下命令可以创建一个名为 test 的 Topic,该 Topic 包含一个分区和一个 Replica。

./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

在这里插入图片描述
(2)创建后可以执行如下命令查看当前的 Topics:

./kafka-topics.sh --list --zookeeper localhost:2181

在这里插入图片描述
2.创建消息
(1)首先创建消息生产者。执行如下命令启动 Kafka 基于命令行的消息生产客户端,启动后可以直接在控制台中输入消息来发送,控制台中的每一行数据都会被视为一条消息来发送。

./kafka-console-producer.sh --broker-list localhost:9092 --topic test

(2)接着创建消息消费者。我们打开另一个命令窗口执行如下执行命令启动 Kafka 基于命令行的消息消费客户端,启动之后,马上可以在控制台中看到之前我们在消息生产客户端中发送的消息。(本例中另一个窗口是通过远程工具putty打开)

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

生产者:
在这里插入图片描述
消费者:
在这里插入图片描述

<think>好的,用户想在Docker中安装Kafka并与Spring Boot集成。我需要先整理安装步骤,然后看看怎么和Spring Boot结合。首先,Docker安装Kafka通常需要Zookeeper,不过新版本的Kafka可能已经内置了,但为了兼容性,可能还是用老方法更稳妥。记得用户需要docker-compose.yml文件,所以得写个示例。然后,安装步骤要分点说明,比如创建目录、编写配置文件、启动容器这些。 接下来是Spring Boot集成部分。用户可能需要添加Kafka依赖,比如Spring Kafka。然后配置application.properties,设置bootstrap-servers地址,应该是Docker容器的地址,比如localhost:9092。然后需要创建生产者和消费者的示例代码,这部分用Java代码展示比较直观。可能还需要说明如何测试,比如用curl发送请求或者用Postman,然后查看日志确认消息是否被消费。 然后要考虑用户可能遇到的问题,比如Docker网络问题导致Spring Boot连不上Kafka,或者端口没映射正确。可能需要提醒检查防火墙或者Docker的端口映射。另外,版本兼容性也很重要,比如Spring Boot和Kafka客户端的版本是否匹配,如果用户用的Spring Boot版本较新,可能需要指定Kafka客户端的版本。 还有,用户可能需要相关的参考资料,比如官方文档或者教程链接。虽然提供的引用内容里有DNS相关的,可能不太相关,但可以忽略。最后,生成相关问题,比如如何配置多Broker集群,如何监控Kafka,或者如何处理消息序列化的问题。这些扩展问题可以帮助用户深入了解更多内容。 现在需要确保所有步骤正确,比如docker-compose.yml里的服务名称、端口映射是否正确。Kafka的环境变量设置是否正确,比如KAFKA_ADVERTISED_LISTENERS要指向Docker主机的地址,这里可能需要根据用户的系统调整,如果是Linux和Mac可能用localhost,Windows可能不同。另外,Kafka的topic创建命令是否正确,是否需要指定分区和副本数。 在Spring Boot部分,配置是否正确,生产者消费者代码是否完整,比如使用@RestController发送消息,消费者用@KafkaListener监听。测试步骤是否清晰,用户能否按照步骤操作成功。最后的问题是否相关,是否覆盖了用户可能感兴趣的后续主题。</think>### 在Docker中安装Kafka并与Spring Boot集成的步骤 #### 一、Docker环境安装Kafka 1. **创建docker-compose.yml文件** 使用以下配置启动ZooKeeperKafka服务(Kafka 3.0+版本已支持内置ZooKeeper,但为兼容性建议显式配置): ```yaml version: &#39;3&#39; services: zookeeper: image: bitnami/zookeeper:3.8 ports: - "2181:2181" environment: ALLOW_ANONYMOUS_LOGIN: "yes" kafka: image: bitnami/kafka:3.6 ports: - "9092:9092" environment: KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 ALLOW_PLAINTEXT_LISTENER: "yes" depends_on: - zookeeper ``` 2. **启动服务** 执行命令: ```bash docker-compose up -d ``` 3. **验证安装** 进入Kafka容器创建测试Topic: ```bash docker exec -it kafka_kafka_1 /bin/bash kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 ``` --- #### 二、Spring Boot集成Kafka 1. **添加Maven依赖** 在`pom.xml`中添加: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 2. **配置application.properties** ```properties spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=my-group spring.kafka.consumer.auto-offset-reset=earliest ``` 3. **创建生产者与消费者** **生产者示例**: ```java @RestController public class KafkaProducerController { @Autowired private KafkaTemplate<String, String> kafkaTemplate; @PostMapping("/send") public void sendMessage(@RequestParam String message) { kafkaTemplate.send("test-topic", message); } } ``` **消费者示例**: ```java @Component public class KafkaConsumer { @KafkaListener(topics = "test-topic", groupId = "my-group") public void listen(String message) { System.out.println("Received: " + message); } } ``` 4. **测试流程** - 发送消息:`curl -X POST http://localhost:8080/send?message=HelloKafka` - 查看消费者日志确认消息接收 --- #### 三、常见问题排查 1. **连接失败** 检查Docker端口映射是否开放(如9092是否被占用),使用`docker logs kafka_kafka_1`查看服务日志。 2. **消息未消费** 验证消费者组ID配置一致性,或使用命令手动查看Topic消息: ```bash kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092 ``` 3. **性能优化** 调整`application.properties`中的批量提交参数: ```properties spring.kafka.producer.batch-size=16384 spring.kafka.producer.linger-ms=50 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值