Почему Graylog прекращает работу, если одна из нод MongoDB недоступна?

Здравствуйте! <br/> У меня развернут кластер Graylog, который включает три ноды Opensearch, три ноды MongoDB и две ноды Graylog. <br/> MongoDB располагается на тех же нодах, что и Graylog. <br/> При отключении одного экземпляра MongoDB (primary) происходит сбой в работе Graylog. <br/> Во время этого отключения самый основной экземпляр MongoDB успешно переключается на другую ноду, и к ней можно подключиться. <br/> В то же время Graylog пытается подключиться к арбитру MongoDB, но не удается соединиться с новым primary. <br/> В логах Graylog отображается следующее сообщение: <br/> Exception in monitor thread while connecting to server 10.210.133.01:27017 <br/> com.mongodb.MongoSocketOpenException: Exception opening socket <br/> Строка подключения к MongoDB выглядит так: <br/> mongodb_uri = <a href="">mongodb://graylog:[email protected]:27017,10....</a> <br/>
  • 21 января 2025 г. 9:04
Ответы на вопрос 2
Ситуация, с которой вы столкнулись, часто связана с тем, как Graylog управляет подключениями к MongoDB и как настроен ваш кластер MongoDB.

1. **Проблема с конфигурацией MongoDB**: Когда один из экземпляров MongoDB (в данном случае primary) отключается, Graylog пытается подключиться к арбитру, но не может найти новый primary. Это может происходить из-за неправильной настройки `mongodb_uri`. Убедитесь, что вы используете правильные версию MongoDB и параметры подключения (например, `replicaSet`), чтобы Graylog мог корректно переключаться на другой primary.

    Пример подключения с использованием `replicaSet`:
    ```
    mongodb_uri = mongodb://graylog:[email protected]:27017,10.210.133.02:27017,10.210.133.03:27017/graylog?replicaSet=<имя_репликасета>
    ```

2. **Мониторинг и тайм-ауты**: Также стоит убедиться, что настройки тайм-аутов для подключения к MongoDB в конфигурации Graylog адекватны. Возможно, настройки времени ожидания изначально слишком малы, что не позволяет Graylog корректно обработать временные отключения.

3. **Проверка логов**: Дополнительно проверьте логи MongoDB на предмет возможных ошибок. Они могут дать вам представление о том, что происходило во время отключения.

4. **Версия Graylog**: Убедитесь, что используете актуальную версию Graylog, в которой могут быть исправлены известные ошибки, касающиеся управления подключениями к MongoDB.

5. **Отладка сетевых решений**: Проверьте, есть ли какие-либо сетевые проблемы, например, проблемы с DNS или настройки брандмауэра, которые могут препятствовать Graylog в установлении соединения с MongoDB.

Если после выполнения всех этих рекомендаций проблема сохраняется, может потребоваться дополнительная диагностика, чтобы подробнее изучить, как Graylog взаимодействует с MongoDB при сбое одного из узлов.
Кластер Graylog (5.2.8) не умеет правильно работать в конфигурации с арбитром в replica set MongoDB. Решил проблему путем перевода ноды Mongo из арбитра в дата ноду.
Похожие вопросы