Kafka рекламирует слушателя через приватную ссылку AWS
У меня в AWS два VPC:
В VPC-A есть экземпляр ec2.
VPC-B имеет экземпляр ec2, в котором запущены kafka и zookeeper через docker-compose
. VPC подключаются через AWS Privatelink (конечная точка -> служба конечной точки -> nlb (в VPC-B) -> kafka). Конечная точка privatelink DNS-имя: broker.confluent-plays
Я могу использовать telnet для обоих портов 9092 и 2181 от VPC A до Kafka и Zookeeper в VPC-B. Нет проблем
[ec2-user@ip-10-1-0-90 etc]$ telnet broker.confluent-playground 9092
Trying 10.1.1.200...
Connected to broker.confluent-playground.
Моя проблема в том, что, хотя между VPC есть сетевое соединение, у меня, похоже, возникают проблемы с конфигурацией прослушивателя kafka. Когда я устанавливаю рекламные файлы для файлов broker.confluent-plays: 9092 , мой производитель не может подключиться, а при запуске kafkacat -b broker.confluent-plays -L я перечисляю только 7 из 40 тем. (они кажутся внутренними системными темами, например "_confluent_balancer_partition_samples" ).
Вот отрывок из файла docker-compose:
broker:
image: confluentinc/cp-server:6.1.1
hostname: broker
container_name: broker
depends_on:
- zookeeper
ports:
- "9092:9092"
- "9101:9101"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: INTERNAL://broker:29092,EXTERNAL://broker.confluent-playground:9092
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
Теперь, если я изменю объявленного слушателя на частный IP-адрес ec2, содержащего кафку, то есть:
FROM
EXTERNAL://broker.confluent-playground:9092
к
EXTERNAL://192.168.35.65:9092
тогда kafkacat в VPC-A может правильно видеть все 40 тем! Я все еще не могу производить (потому что я предполагаю, что мне предоставили рекламируемый частный IP-адрес в другой сети).
Кажется, у меня эти конфигурации слушателей где-то испортились, и я не понимаю, как, изменив рекламируемый слушатель, я могу получить подмножество тем с одним параметром, а затем все темы с другим.
Еще одна интересная
вещь.Мое сканирование kafkacat с использованием рекламируемого прослушивателя broker.confluent-Playground возвращает это
[ [электронная почта защищена] ~] $ sudo docker run --rm --network = host edenhill / kafkacat: 1.5.0 kafkacat -b broker.confluent-plays: 9092 -L
Metadata for all topics (from broker 1: broker.confluent-playground:9092/1):
1 brokers:
broker 1 at broker.confluent-playground:9092 (controller)
7 topics:
И когда я использую частный IP-адрес как (который я не могу получить из VPC-A) в качестве рекламируемого слушателя, я получаю / bootstrap со всеми темами:
[ec2-user@ip-10-1-0-90 ~]$ sudo docker run --rm --network=host edenhill/kafkacat:1.5.0 kafkacat -b broker.confluent-playground:9092 -L
Metadata for all topics (from broker -1: broker.confluent-playground:9092/bootstrap):
1 brokers:
broker 1 at 192.168.54.226:9092 (controller)
40 topics: