当前位置: 首页 > 知识库问答 >
问题:

无法从外部Docker访问kafka

洪华皓
2023-03-14

https://github.com/confluentinc/cp-docker-images/blob/5.0.0-post/examples/kafka-cluster/docker-compose.yml

我已经编辑了该文件,并将ports选项添加到docker组合文件中,以便可以在主机之外访问它们。

---
version: '2' 
services: 
  zookeeper-1: 
    image: confluentinc/cp-zookeeper:latest 
    environment: 
      ZOOKEEPER_SERVER_ID: 1 
      ZOOKEEPER_CLIENT_PORT: 22181 
      ZOOKEEPER_TICK_TIME: 2000 
      ZOOKEEPER_INIT_LIMIT: 5 
      ZOOKEEPER_SYNC_LIMIT: 2 
      ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888 
    network_mode: "host" 

  zookeeper-2: 
    image: confluentinc/cp-zookeeper:latest 
    environment: 
      ZOOKEEPER_SERVER_ID: 2 
      ZOOKEEPER_CLIENT_PORT: 32181 
      ZOOKEEPER_TICK_TIME: 2000 
      ZOOKEEPER_INIT_LIMIT: 5 
      ZOOKEEPER_SYNC_LIMIT: 2 
      ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888 
    network_mode: "host" 

  zookeeper-3: 
    image: confluentinc/cp-zookeeper:latest 
    environment: 
      ZOOKEEPER_SERVER_ID: 3 
      ZOOKEEPER_CLIENT_PORT: 42181 
      ZOOKEEPER_TICK_TIME: 2000 
      ZOOKEEPER_INIT_LIMIT: 5 
      ZOOKEEPER_SYNC_LIMIT: 2 
      ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888 
    network_mode: "host" 

  kafka-1: 
    image: confluentinc/cp-kafka:latest 
    depends_on: 
      - zookeeper-1 
      - zookeeper-2 
      - zookeeper-3 
    ports: 
      - "19092" 
    environment: 
      KAFKA_BROKER_ID: 1 
      KAFKA_ZOOKEEPER_CONNECT: localhost:22181,localhost:32181,localhost:42181 
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:19092 
    network_mode: "host" 

  kafka-2: 
    image: confluentinc/cp-kafka:latest 
    depends_on: 
      - zookeeper-1 
      - zookeeper-2 
      - zookeeper-3 
    ports: 
      - "29092" 
    environment: 
      KAFKA_BROKER_ID: 2 
      KAFKA_ZOOKEEPER_CONNECT: localhost:22181,localhost:32181,localhost:42181 
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092 
    network_mode: "host" 

  kafka-3: 
    image: confluentinc/cp-kafka:latest 
    depends_on: 
      - zookeeper-1 
      - zookeeper-2 
      - zookeeper-3 
    ports: 
      - "39092" 
    environment: 
      KAFKA_BROKER_ID: 3 
      KAFKA_ZOOKEEPER_CONNECT: localhost:22181,localhost:32181,localhost:42181 
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:39092 
    network_mode: "host" 

我已经运行了以下命令:

docker-compose up --no-start
docker-compose start zookeeper-1
docker-compose start zookeeper-2
docker-compose start zookeeper-3

docker-compose run -d --service-ports kafka-1
docker-compose run -d --service-ports kafka-2
docker-compose run -d --service-ports kafka-3
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS               NAMES
7abec60edd7a        confluentinc/cp-zookeeper:latest   "/etc/confluent/dock…"   3 minutes ago       Up 3 minutes                            kafka-cluster_zookeeper-2_1_c9f58ba3fbc8
68ec403740d6        confluentinc/cp-zookeeper:latest   "/etc/confluent/dock…"   3 minutes ago       Up 3 minutes                            kafka-cluster_zookeeper-3_1_31e4762a61bb
69d6645487aa        confluentinc/cp-zookeeper:latest   "/etc/confluent/dock…"   3 minutes ago       Up 3 minutes                            kafka-cluster_zookeeper-1_1_8bbd729b09d8

kafka-1、kafka-2、kafka-3的docker日志(均相同)

[main-SendThread(localhost:42181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server localhost/127.0.0.1:42181. Will not attempt to authenticate using SASL (unknown error)
[main-SendThread(localhost:42181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to localhost/127.0.0.1:42181, initiating session
[main-SendThread(localhost:42181)] INFO org.apache.zookeeper.ClientCnxn - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
[main-SendThread(localhost:32181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:32181. Will not attempt to authenticate using SASL (unknown error)
[main-SendThread(localhost:32181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to localhost/0:0:0:0:0:0:0:1:32181, initiating session
[main-SendThread(localhost:32181)] INFO org.apache.zookeeper.ClientCnxn - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
[main-SendThread(localhost:22181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:22181. Will not attempt to authenticate using SASL (unknown error)
[main-SendThread(localhost:22181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to localhost/0:0:0:0:0:0:0:1:22181, initiating session
[main-SendThread(localhost:22181)] INFO org.apache.zookeeper.ClientCnxn - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
[main] ERROR io.confluent.admin.utils.ClusterStatus - Timed out waiting for connection to Zookeeper server [localhost:22181,localhost:32181,localhost:42181].
[main] INFO org.apache.zookeeper.ZooKeeper - Session: 0x0 closed

docker-compose ps

                  Name                              Command            State    Ports
-------------------------------------------------------------------------------------
kafka-cluster_kafka-1_1_c79e5ef5d397       /etc/confluent/docker/run   Exit 0        
kafka-cluster_kafka-2_1_d4399ed0a670       /etc/confluent/docker/run   Exit 0        
kafka-cluster_kafka-3_1_2df6f47759c0       /etc/confluent/docker/run   Exit 0        
kafka-cluster_zookeeper-1_1_8bbd729b09d8   /etc/confluent/docker/run   Up            
kafka-cluster_zookeeper-2_1_c9f58ba3fbc8   /etc/confluent/docker/run   Up            
kafka-cluster_zookeeper-3_1_31e4762a61bb   /etc/confluent/docker/run   Up            

共有1个答案

杭涵映
2023-03-14

这里的问题是在kafka_adversed_listeners中必须设置为主机的IP地址。以便当您在另一台机器上运行它时,该机器将能够使用IP地址访问kafka。

      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.1.1.1:39092 

@ntwoBike指出的下一点是删除-p选项。不是说不需要它,而是当设置--net=host选项时,它是多余的。

最重要的是检查防火墙。检查iptables规则并将它们更改为forward accept(在我的例子中,我已经这样做了,因为我的是一个开发主机)。

systemctl stop firewalld
systemctl stop ufw
 类似资料:
  • tl;如果在Docker容器中运行,一个RestController正确回答,另一个则不正确。 该服务有两个API 和。 它们都是通过docker compose运行的。 返回。 返回一个空的200响应。正如预期的那样。 应该返回一个200响应和一个每次调用API时都会增加的数字。可悲的是,事实并非如此。 在本地运行该服务可以提供预期的结果。 maven spotify插件用于从以下创建图像。 我

  • 我一直在尝试使用githubrowsersample对sunflower应用程序示例进行Restfulise,所以我一直在尝试进行一些复制和粘贴。然而,我完全搞不懂为什么会出现这个错误。此特定代码是完整的复制和粘贴。 我收到的错误是: 错误:DataBoundViewHolder(T)在DataBoundViewHolder中不是公共的;无法从T为类型变量的包外部访问:T扩展了DataBoundV

  • 我无法从外部访问我的服务。首先,这里是我的conf yaml文件: nginx-pod.yaml nginx-service.yaml metallb-config.yaml 然后我创建了集群。命令 打印: 一切正常,而且< code > ku bectl describe service/nginx-service 打印: curl命令在主服务器打印。接下来我试图从另一个网络打开,它不起作用,但

  • 我有一个适用于OpenShift 4.2的kubeadmin帐户,并且能够通过成功登录。 我公开了内置的docker注册表通过默认路线记录在https://docs.openshift.com/container-platform/4.2/registry/securing-exposing-registry.html 我的docker客户端在macOS上运行,并配置为信任注册表的默认自签名证书

  • 问题内容: 我正在尝试使用docker-compose启动kafka服务,并且应该可以在docker内部和外部进行访问。因此,应该在内部和外部设置合适的广告客户: 问题是,当我尝试从群集外部进行连接时,节点名称不是127.0.0.1,而是内部主机名: 这不是KAFKA_ADVERTISED_LISTENERS和KAFKA_LISTENERS处理这种情况的目的吗?我尝试设置KAFKA_ADVERTI

  • 我想在EC2主机内使用部署应用程序。 出于本问题范围以外的原因,其中一个服务将使用常量docker标记,如。 图像将定期更新(相同的标记,不同的),因此我需要运行。 我的问题是,是否有一种公开的API的方法,以便可以使用对EC2实例的API调用来调用它,从而避免必须ssh到计算机中。