首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从外部码头进入卡夫卡

无法从外部码头进入卡夫卡
EN

Stack Overflow用户
提问于 2018-11-07 06:05:40
回答 2查看 2.9K关注 0票数 2

我有一个合流卡夫卡设置和docker-compose.yml文件

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

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

代码语言:javascript
运行
复制
---
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" 

我运行了以下命令:

代码语言:javascript
运行
复制
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

动物园管理员-1,2,3开始了,但是kafka-1退出代码0失败了.当我执行docker-compose start kafka-1时,端口不会被公开,但是服务已经启动。

上述命令的输出:

船坞ps

代码语言:javascript
运行
复制
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

卡夫卡-1,卡夫卡-2,卡夫卡-3(都是相同的)码头日志

代码语言:javascript
运行
复制
[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

码头-合成ps

代码语言:javascript
运行
复制
                  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            
EN

回答 2

Stack Overflow用户

发布于 2018-11-07 12:14:25

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

代码语言:javascript
运行
复制
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://10.1.1.1:39092 

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

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

如果您正在使用CentOS或RHEL,您可以尝试停止firewalld并检查是否是防火墙造成了问题。

代码语言:javascript
运行
复制
systemctl stop firewalld

对其他人来说,是ufw (Ubuntu,Mint)

代码语言:javascript
运行
复制
systemctl stop ufw

或者,您也可以在此之前执行iptables -F确保使用备份iptables规则

iptables-save > /home/iptables_rules_bak

然后,在冲洗规则之后,你就可以

iptables -P FORWARD ACCEPT

票数 0
EN

Stack Overflow用户

发布于 2018-11-07 14:01:59

如果您通过汇合式查看全合一撰写示例,那么一切都是正确设置的,以便从各个方向访问代理,而不是使用network: host“hack”(这只能在Linux上工作)。

请参阅

代码语言:javascript
运行
复制
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:9092,PLAINTEXT_HOST://localhost:29092

在Docker网络之外,您可以通过端口29092进行连接,但在端口内是9092

更重要的是,动物园管理员连接字符串实际上应该指向对方,而不是localhost

我还想指出,一台计算机上的多个代理没有多少好处,如果您想要持久数据(如果重新启动计算机或Docker,不要丢失所有东西),您将需要安装卷

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

https://stackoverflow.com/questions/53184333

复制
相关文章

相似问题

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