首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能从外部机器访问卡夫卡?

为什么我不能从外部机器访问卡夫卡?
EN

Stack Overflow用户
提问于 2022-04-13 18:52:21
回答 1查看 877关注 0票数 1

我是卡夫卡的新手,我试着用在vps上安装我的第一个集群。但我仍然无法从本地pc (主机外)访问它。

这是我的码头作曲

代码语言:javascript
复制
version: '2'
    services:
      zookeeper-1:
        image: confluentinc/cp-zookeeper:latest
        environment:
          ZOOKEEPER_CLIENT_PORT: 2181
          ZOOKEEPER_TICK_TIME: 2000
        
        ports:
          - 22181:2181

      zookeeper-2:
        image: confluentinc/cp-zookeeper:latest
        environment:
          ZOOKEEPER_CLIENT_PORT: 2181
          ZOOKEEPER_TICK_TIME: 2000
        ports:
          - 32181:2181

      kafka-1:
        image: confluentinc/cp-kafka:latest
        depends_on:
          - zookeeper-1
          - zookeeper-2

        ports:
          - 29092:29092
        environment:
          KAFKA_BROKER_ID: 1
          KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
          KAFKA_LISTENERS: EXTERNAL_SAME_HOST://:29092,EXTERNAL_DIFFERENT_HOST://:29093,INTERNAL://:9092
          KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL_SAME_HOST://localhost:29092,EXTERNAL_DIFFERENT_HOST://XXX.XXX.XXX.XXX:29093
          KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL_SAME_HOST:PLAINTEXT,EXTERNAL_DIFFERENT_HOST:PLAINTEXT
          KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL      
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      kafka-2:
        image: confluentinc/cp-kafka:latest
        depends_on:
          - zookeeper-1
          - zookeeper-2
        ports:
          - 39092:39092
        environment:
          KAFKA_BROKER_ID: 2
          KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
          KAFKA_LISTENERS: EXTERNAL_SAME_HOST://:39092,EXTERNAL_DIFFERENT_HOST://:39093,INTERNAL://:9093
          KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9093,EXTERNAL_SAME_HOST://localhost:39092,EXTERNAL_DIFFERENT_HOST://XXX.XXX.XXX.XXX:39093
          KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL_SAME_HOST:PLAINTEXT,EXTERNAL_DIFFERENT_HOST:PLAINTEXT
          KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

我在日志中搜索,发现没有可用的代理程序(始终为0),因为服务器无法连接到"kafka:9092“,而且动物园管理员一直无法连接到代理。

代码语言:javascript
复制
[2022-04-13 14:56:59,422] WARN Session 0x0 for sever My-vps-URL/XXX.XXX.XXX.XXX:2181, Closing socket connection. Attempting reconnect except 
it is a SessionExpiredException. (org.apache.zookeeper.ClientCnxn)
org.apache.zookeeper.ClientCnxn$SessionTimeoutException: Client session timed out, have not 
heard from server in 30006ms for session id 0x0
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1258)
KeeperErrorCode = ConnectionLoss for /brokers/ids

我怎么才能解决这个问题?

请注意,我尝试了一个类似的配置,使用不同的对接器映像(Bitnami ),以及使用不同的集群配置(1个动物园管理员1 broker ),但它仍然不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 21:37:41

您有一个动物园管理员错误,因为您运行的是偶数。动物园管理员的数量不需要与代理的数量相匹配,它应该是一个奇数,只有,最多可达7。您还不应该需要动物园管理员服务器上的ports

因为你和卡夫卡的联系

  1. KAFKA_LISTENERS需要包含0.0.0.0的IP,以便允许服务器绑定所有接口(
  2. ),您需要公开端口29093和39093,因为这些是“不同的主机”设置。您目前只有从同一台计算机连接的端口。客户端需要连接到所设置的kafka:9092

地址的

  • ,而不是

进一步阅读- Connect to Kafka running in Docker

尝试了一种类似的配置,使用不同的对接器映像(Bitnami)

该图像有不同的变量,但基本答案与上面相同。

不同的集群配置(1个动物园管理员1个代理)

在同一台机器上运行多个配置几乎没有什么好处,因此我建议首先尝试使该配置正常工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71862542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档