Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

482
Views
Error al resolver 'kafka: 9092': nombre o servicio desconocido - docker / php-rdkafka

Estoy tratando de hacer que php se conecte a kafka todo dentro de un contenedor docker.

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

contenedor acoplable kafka - https://hub.docker.com/r/wurstmeister/kafka/

Todo se está construyendo y funcionando bien, pero cuando intento conectarme con el productor de PHP, obtengo lo siguiente:

 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

Estoy usando lo siguiente en PHP

 $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"); } });

He jugado un poco, tratando de configurar la IP del host tanto en docker-compose.yml como en el código PHP, pero no me gustó. También me connection refused , pero no sé si eso es mejor o peor.

Si ayuda, mi docker-compose.yml

 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
  • Versión de PHP: 7.0.17

  • versión de librdkafka: 0.9.5.0

  • php-rdkafka versión: 2.0.1

Mi pregunta: ¿ Alguna idea de cómo puedo conectarme a kafka con éxito desde php?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Los brókeres se anunciarán a sí mismos usando Advertised.Listeners (que parece estar resumido con KAFKA_ADVERTISED_HOST_NAME en esa imagen acoplable) y, en consecuencia, los clientes intentarán conectarse a estos hosts y puertos anunciados.

Por lo tanto, deberá asegurarse de que el cliente pueda resolver y llegar a estos nombres de host anunciados, por ejemplo, agregando "kafka" a /etc/hosts en el host del cliente.

over 4 years ago · Santiago Trujillo Report

0

si la IP del host de los contenedores es 192.168.1.110 , podría configurarla en el env del contenedor docker:

 KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://192.168.1.110:{{ kafka_port }}"
over 4 years ago · Santiago Trujillo Report

0

Agregué lo siguiente en el archivo de hosts del sistema operativo (en Windows - C:\Windows\System32\drivers\Etc\hosts & en Linux - vi /etc/hosts): kafka Luego pude ver los mensajes de kafka provenientes de ese máquina a mi máquina localmente.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!