Я настроил кластер Logstash в Google Cloud, который находится за балансировщиком нагрузки и использует автомасштабирование (-> когда нагрузка становится высокой, новые экземпляры запускаются автоматически).
К сожалению, это не работает должным образом с Filebeat. Filebeat затрагивает только те виртуальные машины Logstash, которые существовали до запуска Filebeat.
Пример: Предположим, у меня изначально запущены эти 3 хоста Logstash:
- Хост1
- Хост2
- Хост3
Когда я запускаю Filebeat, он правильно распределяет сообщения на Host1, Host2 и Host3.
Теперь автомасштабирование запускается и запускает еще 2 экземпляра, Host4 и Host5.
К сожалению, Filebeat по-прежнему отправляет сообщения только на Host1, Host2 и Host3. Новые хосты Host4 и Host5 игнорируются.
Когда я перезапускаю Filebeat, он отправляет сообщения на все 5 хостов!
Таким образом, кажется, что Filebeat отправляет сообщения только тем хостам, которые были запущены при запуске Filebeat.
Мой filebeat.yml выглядит так:
filebeat.inputs:
- type: log
paths:
...
...
output.logstash:
hosts: ["logstash-loadbalancer:5044", "logstash-loadbalancer:5044"]
worker: 1
ttl: 2s
loadbalance: true
Я добавил один и тот же хост (балансировщик нагрузки) дважды, потому что читал на форумах, что в противном случае Filebeat не будет балансировать сообщения -> я могу это подтвердить.
Но все же балансировка нагрузки, похоже, не работает должным образом, например. TTL, кажется, не соблюдается, потому что он всегда нацелен на одни и те же соединения.
Моя конфигурация неверна? Ошибка в Filebeat?