Mongodb EHOSTUNREACH на стартере Openshift Online 3

Сегодня я работал над своим приложением Openshift и, не меняя ничего, связанного с соединением mongodb, я начал получать это сообщение:

/opt/app-root/src/node_modules/mongodb/lib/server.js:242
        process.nextTick(function() { throw err; })
                                      ^
Error: connect EHOSTUNREACH 172.30.173.215:27017
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)

npm info lifecycle [email protected]~start: Failed to exec start script
npm ERR! Linux 3.10.0-693.21.1.el7.x86_64
npm ERR! argv "/opt/rh/rh-nodejs6/root/usr/bin/node" "/opt/rh/rh-nodejs6/root/usr/bin/npm" "run" "-d" "start"
npm ERR! node v6.11.3
npm ERR! npm  v3.10.9
npm ERR! code ELIFECYCLE
npm ERR! [email protected] start: `node main`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script 'node main'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the bolao_2018 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node main
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs bolao_2018
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls bolao_2018
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /opt/app-root/src/npm-debug.log

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

Я также заметил, что IP-адрес, к которому он пытается подключиться, является IP-адресом кластера mongodb, но IP-адрес узла текущего запущенного модуля отличается.

Может ли кто-нибудь помочь мне выяснить, что привело к разрыву соединения?

Спасибо

Вы используете IP-адрес для MongoDB в конфигурации клиента, который его использует, или имя хоста. Технически IP-адрес Service не должен меняться, но обычно лучше использовать имя хоста для Service, которое является именем объекта Service для экземпляра MongoDB.

Graham Dumpleton 12.04.2018 08:08

Я выполнил шаги в документации Openshift, создав переменную окружения MONGO_URL, которая содержит: 'mongodb: // admin: secret @ <MongoDB-service-name>: 27017 / sampled‌ b'. Я не использую в своем коде фиксированный IP-адрес.

Gabriel Muniz Antonio 12.04.2018 14:06

Не уверен, но если образ mongodb был исправлен с помощью обновления безопасности, то связанный ресурс OpenShift ImageStream может автоматически планировать новые развертывания (для распространения обновлений по кластеру). Если в то время были постоянные проблемы с развертываниями, это может привести к сценарию, когда «служба mongodb попыталась и не смогла выполнить новое развертывание». Запуск нового развертывания вручную должен перезагрузить БД и решить проблему.

ʀɣαɳĵ 12.04.2018 18:29

Спасибо за идею, к сожалению, не сработало. Я попытался повторно развернуть mongo и свое приложение, но по-прежнему показывает ту же ошибку

Gabriel Muniz Antonio 12.04.2018 20:33

Какой это стартовый онлайн-кластер? На странице состояния говорится, что us-east-1 имеет некоторые проблемы, это может быть связано с этим. Вы смотрели журналы модуля MongoDB, чтобы убедиться, что он не показывает никаких ошибок при запуске? Вы пробовали использовать oc rsh для доступа к модулю MongoDB и использовать curl, чтобы узнать, можно ли получить доступ к порту MongoDB из того же модуля?

Graham Dumpleton 13.04.2018 02:08

Привет, Грэм! Итак, я запустил curl $MONGODB_SERVICE_HOST:$MONGODB_SERVICE_PORT на моем модуле mongodb и получил тот же ответ, что и на моем модуле приложения Failed connect to 172.30.173.215:27017; No route to host. Мой кластер находится в центре Канады.

Gabriel Muniz Antonio 13.04.2018 02:33

Используйте localhost:27017 в модуле MongoDB. Я хочу убедиться, что он работает изнутри.

Graham Dumpleton 13.04.2018 02:38

В качестве проверки работоспособности, если вы запустите oc describe pod для модуля MongoDB, как будет отображаться IP-адрес? И что вы получаете за oc get endpoints mongodb? Есть ли IP-адрес модуля в этом списке? Также запустите oc describe service mongodb и проверьте те же IP-адреса, указанные там.

Graham Dumpleton 13.04.2018 02:41

Предполагая, что сопоставление IP-адресов службы может быть каким-то образом облажено, попробуйте уменьшить MongoDB до без реплик: oc scale --replicas=0 mongodb. Затем снова вернитесь к 1.

Graham Dumpleton 13.04.2018 02:42

Итак, curl localhost:27017 возвращает It looks like you are trying to access MongoDB over HTTP on the native driver port. oc description pod: IP 10.130.44.221 oc получает конечные точки mongodb NAME ENDPOINTS AGE mongodb 10.130.44.221:27017 25d oc описывает службу mongodb: Name: mongodb Type: ClusterIP IP: 172.30.173.215 Port: mongo 27017/TCP Endpoints: 10.130.44.221:27017 Session Affinity: None Events: <none>

Gabriel Muniz Antonio 13.04.2018 02:52

уменьшение и увеличение масштаба не сработало. Тот же журнал ошибок

Gabriel Muniz Antonio 13.04.2018 03:02

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

Gabriel Muniz Antonio 14.04.2018 04:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
12
381
1

Ответы 1

Из заданной области действия Project запросы, направленные к имени хоста «mongodb», должны направляться на Kubernetes Service с именем «mongodb» (если он доступен).

Чтобы отладить эту проблему с подключением:

  1. Попробуйте открыть работающий терминал в своем внешнем контейнере с помощью веб-консоли OpenShift. Внешний контейнер должен находиться в той же области проекта, что и служба базы данных.
  2. Введите env, чтобы вывести список переменных среды, доступных для внешнего интерфейса. Если этот контейнер был запущен после создания службы «mongodb», строки конфигурации должны быть видны в среде.
  3. Запустите curl $MONGODB_SERVICE_HOST:$MONGODB_SERVICE_PORT из живого терминала, чтобы проверить доступность службы mongodb.
Failed to connect to <same IP address and port of the mongo service> : no route to host - это результат выполнения команды curl.
Gabriel Muniz Antonio 13.04.2018 00:31

Другие вопросы по теме