列出 Apache Kafka 中所有可用代理的命令是什么?

What is the command to list down all the available brokers in Apache Kafka?

我想 运行 Apache Kafka 中的多节点集群。 我制作了三个 server.properties 文件 - 服务器、服务器 1 和服务器 2。我还给出了不同的经纪人 ID 和不同的端口号。仍然在 运行 脚本 kafka-topics.sh 上使用复制因子 if 3,它会抛出一个错误,指出复制 factor:3 大于 brokers:0[= 的数量12=]

我使用了这个命令:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replica-topic

显示的错误是

Error while executing topic command replication factor: 3 larger than available brokers: 0 kafka.admin.AdminOperationException: replication factor: 3 larger than available brokers: 0 at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70) at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:171) at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:93) at kafka.admin.TopicCommand$.main(TopicCommand.scala:55) at kafka.admin.TopicCommand.main(TopicCommand.scala)

你能告诉我哪里错了吗?

我认为你至少应该启动 3 个 kafka 服务器以确保代理的数量大于或等于复制因子的数量:

首先我们为每个代理创建一个配置文件:

cp config/server.properties config/server-1.properties

cp config/server.properties config/server-2.properties

现在编辑这些新文件并设置以下属性:

config/server-1.properties:
    broker.id=1
    listeners=PLAINTEXT://:9093
    log.dir=/tmp/kafka-logs-1


config/server-2.properties:
    broker.id=2
    listeners=PLAINTEXT://:9094
    log.dir=/tmp/kafka-logs-2

broker.id 属性 是集群中每个节点的唯一永久名称。我们必须覆盖端口和日志目录只是因为我们 运行 这些都在同一台机器上,我们希望防止所有代理都试图在同一端口上注册或覆盖彼此的数据。 我们已经有 Zookeeper 和我们的单节点启动了,所以我们只需要启动两个新节点:

bin/kafka-server-start.sh config/server-1.properties

bin/kafka-server-start.sh config/server-2.properties

现在创建一个复制因子为三的新主题:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic