【问题标题】:Is there a way to start a Zookeeper server using my static ip instead of localhost有没有办法使用我的静态 ip 而不是 localhost 来启动 Zookeeper 服务器
【发布时间】:2019-01-24 23:24:08
【问题描述】:

我已经开始为一个新项目学习一些大数据工具,现在我在使用 Kafka 和 Zookeeper。

我将它们都安装在我的本地计算机上,我可以启动它们并开始生成和使用消息就好了。现在,我想尝试使用两台机器,一台带有 kafka 代理、zookeepr 和一个生产者,另一台带有一个消费者。让我们称它们为机器 A 和机器 B。

机器 A 运行 Zookeeper 服务器、代理和生产者。机器 B 运行一个消费者。据我所知,我应该能够使用 Zookeeper 设置消费者在机器 A 上收听生产者的主题。由于两台机器都在同一个网络上(即我的本地家庭网络),我想我可以更改 kafka 代理 server.properties 以将我的静态 IP 地址用于机器 A,然后让机器 B 上的消费者连接到它。

我的问题是,zookeeper 一直在 localhost 上旋转,并连接到 0.0.0.0/0.0.0.0:2181,所以当我的代理尝试使用我的静态 IP 地址(即 192.168.xx)连接到它时,它会计时出去。我已经到处寻找解决方案,但我找不到任何告诉我如何配置 Zookeeper 服务器以从不同的 IP 地址启动。

也许我对这些技术的理解完全是错误的,但我认为这将是一件相当简单的事情。有谁知道解决这个问题的任何方法?否则,如果我做的完全错误,那么正确的方法是什么

【问题讨论】:

  • 消费者使用 Zookeeper 在机器 A 上收听生产者的主题 -- 消费者应该设置为通过 Kafka 而不是 Zookeeper 收听

标签: apache-kafka apache-zookeeper


【解决方案1】:

zookeeper 在 localhost 上不断旋转,并连接到 0.0.0.0/0.0.0.0:2181

嗯,就是绑定地址

您还需要(最好)拥有 Zookeeper 的静态 IP,然后在 Kafka 的 server.properties 文件中设置 zookeeper.connect 以访问其他机器的外部地址。

从 Zookeeper 配置文件中,您将确保您拥有 myid 文件并在属性文件中有如下所示的一行(不带双括号)

server.{{ myid }}={{ ip_address }}:2888:3888

你不会在 Kafka 文档中找到它,但它在 Zookeeper documentation


但是,如果 Kafka 和 Zookeeper 在同一台机器上,则没有必要这样做。

您的外部使用者应该设置bootstrap.servers 属性和带有端口 9092 的 Kafka IP 地址。

您的问题可能与我有关 the advertised.listeners setting within Kafka.

例如,以listeners=PLAINTEXT://:9092开头

【讨论】:

  • 所以在我的 server.properties 文件中,我有 listeners=PLAINTEXT://myStaticIPAddress:9092zookeeper.connect=localhost:2181,当我在另一台机器上启动消费者时,我确实启动它,将 bootstrap.server 属性指向其他机器静态IP地址。但它会告诉我,broker 可能不可用。我还检查了server.properties 文件,但那里的任何地方都没有advertised.listeners 属性。会不会是这个原因?
  • 首先将 listeners 属性设置为PLAINTEXT://0.0.0.0:9092,然后确保 Kafka 正在运行,然后在另一台机器上尝试使用 Netcat 或 telnet 命令测试端口连接
  • 好的,所以当我将 listeners 属性设置为 PLAINTEXT://0.0.0.0:9092 时,我在启动 kafka 时遇到错误,说 Cannot use the nonroutable meta-address 0.0.0.0. Use a routable address 看起来它必须是 localhost 或静态 ip
  • 你也可以使用PLAINTEXT://:9092
  • 成功了!太感谢了!我想我很清楚,PLAINTEXT://:9092 是否意味着代理正在侦听来自该端口上任何服务器的任何连接?那部分我还是有点不清楚
【解决方案2】:

截至Zookeeper 3.3.0(参见高级配置):

clientPortAddress :3.3.0 中的新功能:地址(ipv4、ipv6 或主机名) 监听客户端连接;也就是客户的地址 尝试连接到。这是可选的,默认情况下我们绑定在这样一个 任何与 clientPort 的任何连接的方式 服务器上的地址/接口/网卡将被接受

所以你可以使用:

clientPortAddress=127.0.0.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多