【问题标题】:How to run two instances of Kafka rest如何运行 Kafka 休息的两个实例
【发布时间】:2018-06-28 06:57:19
【问题描述】:

我正在尝试为 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's docs

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

但是,当我使用其他 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)

...

【问题讨论】:

    标签: apache-kafka confluent-platform kafka-rest


    【解决方案1】:

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

    就像Schema Registry一样,配置listeners

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

    默认:“http://0.0.0.0:8082

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

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

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

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

    listeners=http://0.0.0.0:18082
    

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

    【讨论】:

    • 为了清楚起见,假设我想在 0.0.0.0:80821.1.1.1:8082 上运行两个 kafka 连接实例,我应该将两个监听都放在两个文件上,例如listeners=http://0.0.0.0:8082,http://1.1.1.1:8082 还是每个实例只放置一个监听器?
    • 假设您的意思是 REST 代理。这是一个绑定地址。您可以根据需要列出任意数量,但 0.0.0.0 以外的任何内容都将优先并限制连接。请参阅stackoverflow.com/questions/3552680/… 的一般描述我的意思是更改端口号
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2020-02-09
    相关资源
    最近更新 更多