Доступ к брокеру Kafka вне моей локальной сети - PullRequest
1 голос
/ 08 апреля 2020

Я запускаю простой брокер Zookeeper / Kafka, используя команды по умолчанию ниже, как они описаны в документации Kafka на одном компьютере (назовем это Машина A )

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

Они запускают брокера на локальном узле: 9092 на компьютере A.

I, а затем go на другом компьютере (назовем его Машина B ), который находится на той же сети и создайте получателя по умолчанию, предоставленного Kafka, вызвав этот

bin/kafka-console-consumer.sh --bootstrap-server IP_ADDRESS_HERE:9092 --topic test --from-beginning

, где IP_ADDRESS_HERE - это IP-адрес в локальной сети компьютера A, на котором размещен брокер (например, 192.168.1.10)

Все отлично работает. Затем я пытаюсь получить доступ к брокеру с компьютера за пределами моей локальной сети (назовем его Машина C). Я go настраиваю свою конфигурацию маршрутизатора и выполняю переадресацию портов для машины, на которой размещен брокер (машина A). Например, я делаю следующее

192.168.1.10:9092 --> 9094

Это означает, что я пересылаю внутренний порт 9092 устройства 192.168.1.10 (компьютер A) на порт 9094 моего маршрутизатора. Затем я go обращаюсь к такой службе, как YouGetSignal , и проверяю, открыт ли порт 9094 моего publi c IP-адреса (например, 97.190.92.128). И я получаю сообщение о том, что порт действительно открыт.

Когда я пытаюсь получить обработчик в машине A с машины C, используя следующую команду

bin/kafka-console-consumer.sh --bootstrap-server PUBLIC_IP_ADDRESS_HERE:9094 --topic test --from-beginning

Где PUBLIC_IP_ADDRESS_HERE publi c IP-адрес сети, в которой находится компьютер A (например, 97.190.92.128). Тем не менее, я получаю сообщение об ошибке, которое не может подключиться к 192.168.1.10:9092 - посредник может быть недоступен (обратите внимание, что внутренний IP: порт возвращается в ошибке, что означает, что мой маршрутизатор предоставляет информацию правильно)

Что я делаю не так?

1 Ответ

2 голосов
/ 08 апреля 2020

Вам необходимо обновить advertised.listeners в вашем server.properties, чтобы указать комбинацию хост / IP и порт, которую ваш клиент может разрешить и подключиться.

Как вы уже заметили, брокер выдает 192.168.1.10:9092 в ответ на подключение к нему клиента, что отлично подойдет для любой машины в той же сети (включая машину B).

Для машины C брокер должен указать ему, как подключиться к брокеру, что, если я правильно выполнил, - PUBLIC_IP_ADDRESS_HERE:9094.

Если вам необходимо подключиться из обеих локальных сетей и WAN, вам понадобятся два слушателя; один для локальной сети и один для глобальной сети. В server.properties введите:

listeners=LISTENER_LAN://0.0.0.0:9092,LISTENER_WAN://0.0.0.0:9094
advertised.listeners=LISTENER_LAN://192.168.1.10:9092,LISTENER_WAN://PUBLIC_IP_ADDRESS_HERE:9094
listener.security.protocol.map: LISTENER_LAN:PLAINTEXT,LISTENER_WAN:PLAINTEXT
inter.broker.listener.name=LISTENER_LAN

Обратите внимание, что вам нужно изменить переадресацию портов, чтобы конечной точкой вашего брокера был порт, определенный для LISTENER_WAN (9094). Если WAN-соединение пытается подключиться к брокеру на 9092, ему будет дано подробное описание LISTEN_LAN (что происходит в данный момент и не будет работать).

Ссылка: https://rmoff.net/2018/08/02/kafka-listeners-explained/

...