簡體   English   中英

無法訪問 docker 容器外的 kafka

[英]can't access kafka outside the docker container

我將最新的 HDP 安裝到 docker 容器中。

docker ps
>hortonworks/sandbox-proxy:1.0
>hortonworks/sandbox-hdp:3.0.1

Kafka 代理運行在6667端口,它工作正常。

   >ssh hdfs@sandbox-hdp.hortonworks.com -p 2222
   > echo "send test message" | kafka-console-producer.sh --broker-list sandbox-hdp.hortonworks.com:6667 --topic hotelReservation > /dev/null
   >kafka-console-consumer.sh   --bootstrap-server sandbox-hdp.hortonworks.com:6667 --topic test --from-beginning

唯一的問題是我無法訪問 docker 容器外的 Kafka 代理。

有關故障排除的更多信息:

我驗證了所有端口都打開了本地機器 -> 代理 -> hdp

HDP 服務器:

      hostname -I
      172.18.0.2

      netstat -vatn | grep 6667
      tcp        0      0 172.18.0.2:6667         0.0.0.0:*               LISTEN

代理服務器

  hostname -I
  172.18.0.3

  nmap 172.18.0.2 -p 6667
  6667/tcp open  irc

  netstat -vatn | grep 6667
  tcp        0      0 0.0.0.0:6667            0.0.0.0:*               LISTEN

我的本地機器:

nmap sandbox-hdp.hortonworks.com -p 6667
    Host is up (0.000064s latency).
    rDNS record for 127.0.0.1: localhost
    PORT     STATE SERVICE
    6667/tcp open  irc

注:6668 也是開放的。

包含默認流CONF(在/ etc / nginx的/ CONF / stream.d / TCP-hdp.conf):

server {
  listen 6668;
  proxy_pass sandbox-hdp:6667;
}

所以我決定創建新配置的HTTP:在/ etc / nginx的/ conf目錄/ stream.d / TCP-hdp.conf

server {
  listen 6667;
  server_name sandbox-hdp.hortonworks.com;
  location / {
    proxy_pass http://sandbox-hdp:6667;
  }
}

注意:我讀到( here )我應該使用advertised.listeners 來訪問醫生之外的broker:

>listeners=PLAINTEXT://0.0.0.0:6667
>advertised.listeners=PLAINTEXT://172.18.0.2:6667

但我確定這對我的情況不正確。 我可以在這個網絡中訪問,問題只是某種類型的Nginx 映射

解決方案:

運行以下命令以查找hortonworks/sandbox-proxy容器 ID。

docker ps

登錄代理服務器

docker exec -it CONTAINER_ID /bin/bash

在 nginx 中添加新映射

cd /etc/nginx/conf.stream.d
vim tcp-hdp.conf

配置:

server {
  listen 6667;
  proxy_pass sandbox-hdp:6667;
}

重新加載 nginx 映射:

/etc/init.d/nginx reload

測試:

> ./kafka-console-consumer.sh --bootstrap-server localhost:6668 --topic topicName --from-beginning
> echo "msg" | ./kafka-console-producer.sh --broker-list sandbox-hdp.hortonworks.com:6668 --topic topicName > /dev/nul

問題是缺少 6667:6667 映射。 現在代理可以訪問 6667 和 6668 端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM