0

我正在尝试为 Kafka Rest 运行第二个实例。这是第一个的属性文件:

id=kafka-rest-test-server-1
schema.registry.url=http://localhost:8081,http://localhost:9081
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
bootstrap.servers=PLAINTEXT://localhost:9092,PLAINTEXT://localhost:9093,PLAINTEXT://localhost:9094

根据Confluent 的文档

多个实例的唯一要求是您为每个实例设置一个唯一的 ID。

但是,当我使用 other 运行第二个实例时id,会抛出一个异常,指出该地址已在使用中:

WARN FAILED io.confluent.rest.Application$1@41294f8: java.net.BindException: Address already in use (org.eclipse.jetty.util.component.AbstractLifeCycle:212)
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)

...
4

1 回答 1

1

ID 不控制端口。文档中的“多个实例”是指独立的机器

就像 Schema Registry 一样,配置listeners

listeners
通过 HTTP 或 HTTPS 侦听 API 请求的侦听器的逗号分隔列表

默认值:“<a href="http://0.0.0.0:8082" rel="nofollow noreferrer">http://0.0.0.0:8082“</p>

https://docs.confluent.io/current/kafka-rest/docs/config.html#kafkarest-config

port属性已被弃用,但如果您运行的是旧版本,设置它也无妨

例如,第一个实例,保留默认值

第二个实例,使用任何可用的端口

listeners=http://0.0.0.0:18082

通常建议您使用多台机器来实现高可用性和分布式处理。运行 3 个 Zookeeper、3 个代理、2 个注册表和 2 个代理,你基本上是在乞求用完 RAM

于 2018-06-28T08:24:39.120 回答