我正在使用一个拥有3个代理的Dockerized静态Kafka集群(0.11)。此群集的问题是,如果所有代理都在同一端口上运行,则控制器节点不允许我创建主题。
但是,如果所有代理都在不同的端口上运行,那么它运行正常。
我的问题是为什么它不在同一个端口上运行,虽然我在不同的节点上运行每个代理?
这是我的代理配置模板:
auto.leader.rebalance.enable=true
broker.id.generation.enable=false
broker.id={{KAFKA_BROKER_ID}}
auto.create.topics.enable=true
default.replication.factor={{DEFAULT_REPLICATION_FACTOR}}
min.insync.replicas={{MIN_INSYNC_REPLICAS}}
offsets.topic.replication.factor={{DEFAULT_REPLICATION_FACTOR}}
offsets.commit.required.acks={{MIN_INSYNC_REPLICAS}}
advertised.host.name={{KAFKA_ADVERTISED_HOST_NAME}}
delete.topic.enable={{KAFKA_DELETE_TOPIC_ENABLE}}
message.max.bytes={{KAFKA_MESSAGE_MAX_BYTES}}
replica.fetch.max.bytes={{KAFKA_MESSAGE_MAX_BYTES}}
port={{KAFKA_PORT}}
advertised.port={{KAFKA_ADVERTISED_PORT}}
log.dir=/data/{{KAFKA_BROKER_ID}}
log.dirs=/data/{{KAFKA_BROKER_ID}}
num.partitions={{KAFKA_NUM_PARTITIONS}}
log.retention.hours={{LOG_RETENTION_HOURS}}
zookeeper.connect={{ZOOKEEPER_CONNECTION_STRING}}{{ZOOKEEPER_CHROOT}}
zookeeper.connection.timeout.ms={{ZOOKEEPER_CONNECTION_TIMEOUT_MS}}
zookeeper.session.timeout.ms={{ZOOKEEPER_SESSION_TIMEOUT_MS}}
zookeeper.sync.time.ms=10000
controlled.shutdown.enable=true
group.max.session.timeout.ms={{GROUP_MAX_SESSION_TIMEOUT_MS}}
unclean.leader.election.enable=false
controller.socket.timeout.ms=120000
num.recovery.threads.per.data.dir=5
num.replica.fetchers=3
答案 0 :(得分:0)
首先,您在配置文件中使用了已弃用的变量。移除advertised.host.name
,advertised.port
和port
。您需要做的就是设置listeners=PLAINTEXT://:9092
。如果端口9092在每个容器上公开,并且每个容器都在不同的节点上,并且具有不同的broker.id
,并且连接到同一个ZooKeeper集群,那么您的代理应该能够相互通信而不需要任何问题。