java - 无法启动本地 kafka 代理
问题描述
当我使用以下配置在我的机器上启动本地 kafka 代理时
listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093
advertised.listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093
它工作正常。但是,如果我在广告侦听器中将 localhost 替换为我的机器名称,那么
listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093
advertised.listeners=PLAINTEXT://GBV04303950:9092,SSL://GBV04303950:9093
然后它拒绝启动,并显示错误消息
[2019-03-12 17:32:00,179] WARN [Controller id=0, targetBrokerId=0] 无法建立到节点 0 (GBV04303950/10.202.32.140:9092) 的连接。经纪人可能不可用。(org.apache.kafka.clients.NetworkClient)[2019-03-12 17:32:00,203] 错误 [KafkaApi-0] 活动代理的数量“0”不满足偏移主题所需的复制因子“1” (通过'offsets.topic.replication.factor'配置)。如果集群正在启动并且并非所有代理都已启动,则可以忽略此错误。(kafka.server.KafkaApis)
我还尝试使用带有域名的完全限定主机名,通过在提示符处键入“ping localhost”返回,但发生相同的错误。
为什么无法使用机器名连接,但可以使用 localhost?
解决方案
请注意,仅在以下情况下才需要同时配置SSL
和PLAINTEXT
端口:
- 没有为代理间通信启用 SSL
- 一些连接到集群的客户端不使用 SSL
如果是这种情况,那么以下示例配置应该可以工作:
listeners=PLAINTEXT://GBV04303950:9092,SSL://GBV04303950:9093
advertised.listeners=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093
推荐阅读
- ruby-on-rails - 什么是使用动作邮件发送大量电子邮件的面向性能的方法?
- regex - 仅使用 Google 表单中的某些字词进行响应验证
- appium - 如何使用 Appium 在真实 iOS 设备上自动化我不拥有的 iOS 应用程序
- azure - 在 Azure Functions 2 中,+(加)号是否适用于路由
- regex - 使用 Powershell 将第二次出现的“-”替换为“_”
- javascript - 为什么我的 JavaScript API 调用返回 400 错误?
- apache-kafka - 带有内部 RocksDB 状态存储的 Kafka 流应用程序无法获取密钥的数据
- python - BleachBit 和其他程序报告 No module named 'gtk' ModuleNotFoundError:
- java - 逐渐改变 GPS 中的圆圈颜色
- python - ImportError:无法导入名称“transpose_shape”