См. https://rmoff.net/2018/08/02/kafka-listeners-explained/
Вам нужны два слушателя - один отвечает на и рекламирует внутренние адреса, другой - на внешний.
Ключевым моментом является то, что прослушиватель, к которому подключается ваш клиент, вернет адрес хоста и порт этого прослушивателя .
В данный момент вы перефразируете свой внешний с внутренним, и ваш внешний трафик, таким образом, достигает внутреннего слушателя.
Вам нужно что-то вроде этого (изменение IP / имени хоста aws_internal_listener
в соответствии с требованиями для брокера):
KAFKA_LISTENERS: aws_internal_listener://192.168.0.241:9092,external_listener://192.168.0.241:29092
KAFKA_ADVERTISED_LISTENERS: aws_internal_listener://192.168.0.241:9092,external_listener://DYNAMIC_DNS_ADDR:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: aws_internal_listener:PLAINTEXT,external_listener:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: aws_internal_listener
Тогда ваш перенаправитель портов для DYNAMIC_DNS_ADDR
должен перенаправить соединения на 29092 на узле AWS.Ключевым моментом является то, что внешние соединения не должны заканчиваться на порту слушателя на хосте, совпадающем с внутренним слушателем (который объявляет внутренний 192.168.0
адрес)
Используйте kafkacat -L -b DYNAMIC_DNS_ADDR:29092
для отладки и проверки вашей конфигурации, как описано в статье здесь .