1】确认 ZooKeeper 服务状态
为了进一步确认 ZooKeeper 服务的状态,你可以执行以下操作:
-
检查 ZooKeeper 服务状态:
bashdocker ps
确保 ZooKeeper 容器正在运行。
-
检查 ZooKeeper 日志:
bashdocker logs zookeeper
查看最新的日志条目,确保没有新的错误或警告信息。
-
测试 ZooKeeper 连接:
使用
nc
(Netcat)来测试 ZooKeeper 服务是否可以连接:bashdocker exec -it kafka /bin/sh nc -zv 110.40.130.231 2181
如果连接成功,你会看到类似以下的输出:
bashConnection to 110.40.130.231 2181 port [tcp/*] succeeded!
2】确认 Kafka 服务状态
若ZooKeeper 服务已经正常运行,再认 Kafka 服务的状态:
-
检查 Kafka 服务状态:
bashdocker ps
确保 Kafka 容器正在运行。
-
检查 Kafka 日志:
docker logs kafka
查看最新的日志条目,确保没有新的错误或警告信息。
-
测试 Kafka 生产和消费消息:
使用 Kafka 的命令行工具来测试生产者和消费者的连接。首先,进入 Kafka 容器:
docker exec -it kafka /bin/sh
然后,创建一个测试主题:
bash/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --zookeeper 110.40.130.231:2181
发送一些测试消息:
/opt/kafka/bin/kafka-console-producer.sh --broker-list 110.40.130.231:9092 --topic test-topic
在另一个终端窗口中,启动一个消费者来接收消息:
bashdocker exec -it kafka /bin/sh /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 110.40.130.231:9092 --topic test-topic --from-beginning
如果一切正常,在消费者端看到生产者发送的消息。
/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --zookeeper 110.40.130.231:2181
详细解释
-
/opt/kafka/bin/kafka-topics.sh
:- 这是 Kafka 提供的命令行工具之一,用于管理和操作 Kafka 主题。
- 路径
/opt/kafka/bin
是 Kafka 安装目录下的bin
目录,其中包含了各种 Kafka 命令行工具。
-
--create
:- 这个选项表示要创建一个新的主题。
- 其他常用选项包括
--list
(列出所有主题)、--describe
(描述特定主题的详细信息)、--delete
(删除主题)等。
-
--topic test-topic
:- 这个选项指定了要创建的主题的名称。
test-topic
是选择的主题名称,你可以根据需要将其替换为任何其他名称。
-
--partitions 1
:- 这个选项指定了主题的分区数。
- 分区是 Kafka 中的一个重要概念,用于实现水平扩展和并行处理。每个分区可以独立地存储和处理消息。
- 在这个例子中,
1
表示该主题将只有一个分区。
-
--replication-factor 1
:- 这个选项指定了主题的副本因子。
- 副本因子决定了每个分区的数据在多少个不同的 Kafka 代理(broker)上进行复制,以提高可用性和容错性。
- 在这个例子中,
1
表示每个分区只有一个副本,这意味着没有冗余备份。如果你希望增加冗余,可以将此值设置为大于 1 的数字,例如2
或3
。
-
--zookeeper 110.40.130.231:2181
:- 这个选项指定了 ZooKeeper 的地址和端口。
- ZooKeeper 是一个分布式协调服务,Kafka 使用它来管理集群的元数据,包括主题、分区和副本的信息。
110.40.130.231
是 ZooKeeper 服务器的 IP 地址,2181
是默认的 ZooKeeper 端口。