«MongoSocketOpenException: сокет открытия исключения» для основного узла в наборе реплик MongoDB

avatar
Dhaval Simaria
9 августа 2021 в 07:10
208
0
0

У нас есть микросервисы Spring, работающие в кластере Azure Kubernetes и подключенные к набору реплик MongoDB (3 узла). После правильной работы в течение некоторого времени мы получаем следующую ошибку:

.
Timed out after 30000 ms while waiting for a server that matches 
ReadPreferenceServerSelector{readPreference=primary}. 
Client view of cluster state is 
{type=REPLICA_SET, servers=[
{address=mongo01.myhost.cloud:27017, type=UNKNOWN, 
state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, 
caused by {java.net.SocketTimeoutException: connect timed out}}, 
{address=mongo02.myhost.cloud:27017, type=REPLICA_SET_SECONDARY, 
roundTripTime=2.2 ms, state=CONNECTED}, 
{address=mongo03.myhost.cloud:27017, type=REPLICA_SET_SECONDARY, 
roundTripTime=1.2 ms, state=CONNECTED}];  

Как видно из журнала ошибок, основной узел не может подключиться, в то время как два дополнительных узла подключены.

  • Я не могу понять, почему эта ошибка возникает после успешного запуска приложения в течение некоторого времени?
  • Что можно исправить?

Если я подключаюсь к тому же набору реплик MongoDB через приложение, работающее в моей локальной системе, я не сталкиваюсь с этой проблемой.

Я ссылался на некоторые другие ресурсы, такие как Springboot дает сбой, даже если один член реплики выходит из строя и JIRA-MongoDB: MongoSocketOpenException: Exception opens socket

, но ни в коем случае 6721.<667211264393>. >

Версии: MongoDB: 4.4.1 Java: 11 Spring boot: 2.2.4-RELEASE

Я был бы признателен за любую помощь здесь.

Источник
Поделиться Скопировать ссылку Скопировано
Mikolaj S.
9 августа 2021 в 14:37
0

Как вы настроили кластер Kuberenetes? Bare-metal или какое-то облачное решение? Как вы развернули приложения MongoDB в Kubernetes — не могли бы вы поделиться инструкцией, которую вы использовали? Не могли бы вы поделиться некоторыми логами из сломанного модуля с помощью команды kubectl logs {broken-pod} (как я понимаю, это то, что вы имеете в виду под узлом?). Пожалуйста, добавьте недостающую информацию в свой пост.

Dhaval Simaria
10 августа 2021 в 08:25
0

@Mikolaj Это облачное решение Azure. Сообщение об ошибке, которым я поделился, взято из журналов сломанного модуля. Я попытался сохранить четкость и не оставлять здесь весь стек ошибок. Когда я говорю узел, я на самом деле имею в виду узел, как в «узлах в наборе реплик MongoDB», а не сервисные модули в Kubernetes.

Mikolaj S.
11 августа 2021 в 08:32
0

Не могли бы вы проверить статус неработающего модуля — это состояние running или что-то другое? Не могли бы вы подтвердить, что вы можете запустить сломанный модуль и выполнить некоторые основные команды, проверить пинг и т. д.?

Dhaval Simaria
11 августа 2021 в 12:21
0

@Mikolaj Да, я могу запустить сломанный модуль и запустить команды netstat. И этот модуль находится в состоянии running.

Ответы (0)