Я пытаюсь подключиться с внешнего клиента (моего ноутбука) к брокеру в кластере Kafka, который я использую на машинах ec2.Когда я пытаюсь подключиться с локального компьютера, я получаю следующую ошибку:
$ ./kafka-console-producer --broker-list AWS.PRIV.ATE.IP:9092 --topic test
>hi
>[2018-09-20 13:28:53,952] ERROR Error when sending message to topic test with key: null, value: 2 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0: 1519 ms has passed since batch creation plus linger time
Тема существует, потому что, если я запускаю (с локального компьютера)
$ ./kafka-topics --list --zookeeper AWS.PRIV.ATE.IP:2181
__confluent.support.metrics
__consumer_offsets
_schemas
connect-configs
connect-offsets
connect-status
test
Конфигурация кластера изШаблон быстрого запуска AWS от Confluent: https://github.com/aws-quickstart/quickstart-confluent-kafka/blob/master/templates/confluent-kafka.template, и я использую версию с открытым исходным кодом.
Три экземпляра брокера ec2 видны для моей локальной машины, что я подтвердил, остановив брокер Kafka, запустивпростой HTTP-сервер на порту 9092 и успешно curl
этот сервер использует внутренний IP-адрес экземпляра ec2.
Если я ssh
в один из экземпляров брокера, я могу успешно создавать и принимать сообщения черезкластер.Единственное обновление, которое я внес в готовую конфигурацию, предоставляемую шаблоном, - это изменение listeners=PLAINTEXT://ec2-AWS-PUB-LIC-IP.compute-1.amazonaws.com:9092
в server.properties
на каждой машине, а затем перезапуск сервера kafka.
Я могу предоставить большеинформация о конфигурации или отладке, если это необходимо.Поверьте, проблема заключается в обнаружении / видимости IP-адреса, но я не совсем уверен, что именно.