首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能解决“kafka:9092”:名称或服务未知- docker / php-rdkafka

未能解决“kafka:9092”:名称或服务未知- docker / php-rdkafka
EN

Stack Overflow用户
提问于 2017-03-29 20:07:42
回答 3查看 24.8K关注 0票数 18

我试图让php连接到kafka所有在一个码头容器。

kafka php lib - https://github.com/arnaud-lb/php-rdkafka/

卡夫卡码头集装箱- https://hub.docker.com/r/wurstmeister/kafka/

一切都在构建和运行中,但是当我尝试与PHP生成器连接时,我得到了以下内容:

代码语言:javascript
复制
httpd_1   | %3|1490816385.542|FAIL|rdkafka#producer-1| [thrd:kafka:9092/bootstrap]: kafka:9092/bootstrap: Failed to resolve 'kafka:9092': Name or service not known
httpd_1   | %3|1490816385.543|ERROR|rdkafka#producer-1| [thrd:kafka:9092/bootstrap]: kafka:9092/bootstrap: Failed to resolve 'kafka:9092': Name or service not known
httpd_1   | %3|1490816385.543|ERROR|rdkafka#producer-1| [thrd:kafka:9092/bootstrap]: 1/1 brokers are down

我在PHP中使用以下内容

代码语言:javascript
复制
    $rk = new RdKafka\Producer();
    $rk->setLogLevel(LOG_DEBUG);
    $rk->addBrokers("kafka");

    $topicConf = new RdKafka\TopicConf();
    $topicConf->set("message.timeout.ms", 1000);
    $topic = $rk->newTopic("DEV", $topicConf);

    $topic->produce(RD_KAFKA_PARTITION_UA, 0, "Message");

    $rk->poll(1000);
    $kafkaConf = new RdKafka\Conf();
    $kafkaConf->setErrorCb(function ($rk, $err, $reason) {
        printf("Kafka error: %s (reason: %s)\n", rd_kafka_err2str($err), $reason);
    });
    $kafkaConf->setDrMsgCb(function ($rk, $message) {
        if ($message->err) {
            print_r($message);
        } else {
            print_r("ok");
        }
    });

我玩过,尝试在docker-come.yml和PHP代码中设置主机IP,但没有joy。我也有connection refused,但我不知道这是好还是坏?

如果有帮助的话,我的码头工

代码语言:javascript
复制
httpd:
  build: .
  ports:
  - 8180:80
  volumes:
  - ~/www:/var/www/html
zookeeper:
  image: wurstmeister/zookeeper
  ports:
  - "2181:2181"
kafka:
  build: ~/kafka-docker/.
  links:
  - zookeeper
  ports:
  - "9092:9092"
  environment:
    KAFKA_ADVERTISED_HOST_NAME: kafka
    KAFKA_ADVERTISED_PORT: 9092
    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  • PHP版本: 7.0.17
  • 图书馆员版: 0.9.5.0
  • php-rdkafka版本: 2.0.1

我的问题:我知道如何从php成功地连接到kafka吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-30 05:46:09

代理将使用advertised.listeners (在码头映像中似乎是用KAFKA_ADVERTISED_HOST_NAME抽象的)自己做广告,因此客户端将尝试连接到这些广告中的主机和端口。

因此,您需要确保客户端能够解析并到达此广告主机名,例如,在客户端主机上添加"kafka“到/etc/ host。

票数 26
EN

Stack Overflow用户

发布于 2021-03-03 06:07:29

如果容器的主机IP是192.168.1.110,可以将其设置为坞容器env:

代码语言:javascript
复制
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://192.168.1.110:{{ kafka_port }}"
票数 4
EN

Stack Overflow用户

发布于 2021-07-15 12:34:21

我在操作系统的主机文件中添加了以下内容(在windows -C:\Windows\System32 32\drivers\etc\host& in vi /etc/host上):kafka可以看到从该机器本地发送到我的计算机的kafka消息。

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

https://stackoverflow.com/questions/43103167

复制
相关文章

相似问题

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