Подключение Logstash к Kafka в Azure через публичный IP - PullRequest
0 голосов
/ 09 мая 2018

У меня проблемы с подключением Logstash к моему экземпляру Kafka, работающему в Azure. Мой хост kafka имеет статический публичный IP-адрес. Все работает нормально, если я спулингаю машины Logstash внутри одной подсети и соединяю их. Но когда я пытаюсь отправить данные в экземпляр kafka через публичный IP-адрес, я получаю ошибки. Например, при попытке подключить мой экземпляр Logstash из дома к облачной среде Azure.

Вот соответствующие файлы конфигурации и то, что я пробовал:

Выход Logstash:

  kafka {
    bootstrap_servers => "my public ip:9092"
    codec => json
    topic_id => "tagger"
  }

Прежде чем продолжить, netcat проверил, что я действительно могу достичь порта на kafka, между блокировками соединения нет брандмауэра.

Вот мой файл kafka server.properties с настройками, которые я пробовал на основе аналогичных проблем в других ответах.

#--------------------------------------------------------#
#Logstash says: Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.01}
#advertised.listeners=PLAINTEXT://10.10.100.4:9092
#listeners=PLAINTEXT://10.10.100.4:9092
#--------------------------------------------------------#
#Logstash says: Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.01}
#advertised.listeners=PLAINTEXT://10.10.100.4:9092
#listeners=PLAINTEXT://0.0.0.0:9092
#--------------------------------------------------------#
#Logstash says: Error while fetching metadata with correlation id 1 : {tagger=LEADER_NOT_AVAILABLE}
#advertised.listeners=PLAINTEXT://publicip:9092
#listeners=PLAINTEXT://0.0.0.0:9092
#--------------------------------------------------------#
#Logstash says: Error while fetching metadata with correlation id 1 : {tagger=LEADER_NOT_AVAILABLE}
#advertised.listeners=PLAINTEXT://publicip:9092,SEC://10.10.100.4:9093
#listeners=PLAINTEXT://0.0.0.0:9092,SEC://10.10.100.4:9093
#--------------------------------------------------------#
#Logstash says: Error while fetching metadata with correlation id 1 : {tagger=LEADER_NOT_AVAILABLE}
advertised.listeners=PLAINTEXT://publicip:9092
advertised.hostname=dnsname.com

Наконец, вот конфиг, который отлично работал для меня, когда я запускал Logstash и Kafka в одной подсети в среде Azure:

listeners=PLAINTEXT://10.10.100.4:9092,SSL://10.10.100.4:9093
advertised.listeners=PLAINTEXT://10.10.100.4:9092,SSL://10.10.100.4:9093

Это сводит меня с ума, спасибо за любую помощь, поскольку я продолжаю искать

1 Ответ

0 голосов
/ 09 мая 2018

Я понял это.Если вы столкнулись с этой проблемой, и ваши ошибки похожи на мои, описанные выше на Logstash End, проверьте каталог журналов kafka и есть файл с именем «controller.log».

Вот ошибки, которые я получал:

WARN [Controller-1-to-broker-1-send-thread]: Controller 1's connection to broker MYDOMAINNAME:9092 (id: 1 rack: null) was unsuccessful (kafka.controller.RequestSe$
java.net.SocketTimeoutException: Failed to connect within 30000 ms

Я запустил netcat -z -v DOMAINNAME 9092, но ответа не было.Я добавил доменное имя к /etc/hosts.Это выглядит так, когда zookeeper работает на локальном хосте (127.0.0.1).Я вполне уверен, что zookeeper не смог разрешить его, и поэтому я сопоставил его с моим localhost.

127.0.0.1 MYDOMAIN.com

Затем я удалил все в /tmp/kafka-logs (ВНИМАНИЕ, ПОТЕРЯЕТ ВСЕ ВАШИ ДАННЫЕ), а затем перезапустил сервер и zookeeper, и теперь он работает нормально.Что за боль

...