Невозможно подключиться к KAFKA, работающему в Azure Службе приложений - PullRequest
1 голос
/ 22 февраля 2020

Я создал службу приложений в Azure и загрузил композицию docker, как показано ниже

version: '2.1'

services:
  zoo1:
    image: zookeeper:3.4.9
    hostname: zoo1
    ports:
      - "2181:2181"
    environment:
        ZOO_MY_ID: 1
        ZOO_PORT: 2181
        ZOO_SERVERS: server.1=zoo1:2888:3888
  kafka1:
    image: confluentinc/cp-kafka:5.3.1
    hostname: kafka1
    ports:
      - "9092:9092"
    environment:
      KAFKA_LISTENERS: LISTENER_INTERNAL://kafka1:29092,LISTENER_EXTERNAL://kafka1:9092
      KAFKA_ADVERTISED_LISTENERS: LISTENER_INTERNAL://kafka1:29092,LISTENER_EXTERNAL://dev-my-public-host-kafka.azurewebsites.net:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_INTERNAL:PLAINTEXT,LISTENER_EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_INTERNAL

      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    depends_on:
      - zoo1

Затем я пытаюсь подключиться к этому KAFKA, используя npm -kafka

const KAFKA_SERVER='dev-my-public-host-kafka.azurewebsites.net:9092'
const client = new kafka.KafkaClient({ kafkaHost: KAFKA_SERVER });

Кажется, это не работает. Я получаю соединение отказано.

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Вы не можете получить доступ к любым другим портам, кроме 80 и 443, на веб-приложениях Azure из Интернета / любого процесса, не входящего в то же изолированное приложение. Начиная с документа :

Единственный способ получить доступ к приложению через inte rnet - через уже выставленные порты HTTP (80) и HTTPS (443) TCP ; приложения могут не прослушивать на других портах пакеты, поступающие из inte rnet. Однако приложения могут создать сокет, который может прослушивать соединения из песочницы. Например, два процесса в одном приложении могут связываться друг с другом через сокеты TCP; Попытки подключения, поступающие извне «песочницы», хотя они и находятся на одной машине, не будут выполнены. Дополнительную информацию смотрите в следующей топи c.

Итак, если вы хотите подключиться к Kafka извне, вам нужно изменить конфигурацию, чтобы использовать разрешенные порты, или вы могли бы использовать другой Azure Предлагая, как виртуальные машины, контейнерные экземпляры, AKS, ServiceFabri c et c. если вы хотите выставить другие порты.

0 голосов
/ 22 февраля 2020

Ваш внешний слушатель такой же, как внутренний. Вам нужно будет открыть все адреса

LISTENER_EXTERNAL://0.0.0.0:9092

. Для простоты вы можете вместо этого использовать Azure EventHubs или запускать свой код в контейнере

Вы также можете использовать AKS вместо а не составлять на одной машине

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...