Сегодня я работал над своим приложением 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-адрес узла текущего запущенного модуля отличается.
Может ли кто-нибудь помочь мне выяснить, что привело к разрыву соединения?
Спасибо
Я выполнил шаги в документации Openshift, создав переменную окружения MONGO_URL, которая содержит: 'mongodb: // admin: secret @ <MongoDB-service-name>: 27017 / sampled b'. Я не использую в своем коде фиксированный IP-адрес.
Не уверен, но если образ mongodb был исправлен с помощью обновления безопасности, то связанный ресурс OpenShift ImageStream может автоматически планировать новые развертывания (для распространения обновлений по кластеру). Если в то время были постоянные проблемы с развертываниями, это может привести к сценарию, когда «служба mongodb попыталась и не смогла выполнить новое развертывание». Запуск нового развертывания вручную должен перезагрузить БД и решить проблему.
Спасибо за идею, к сожалению, не сработало. Я попытался повторно развернуть mongo и свое приложение, но по-прежнему показывает ту же ошибку
Какой это стартовый онлайн-кластер? На странице состояния говорится, что us-east-1 имеет некоторые проблемы, это может быть связано с этим. Вы смотрели журналы модуля MongoDB, чтобы убедиться, что он не показывает никаких ошибок при запуске? Вы пробовали использовать oc rsh для доступа к модулю MongoDB и использовать curl, чтобы узнать, можно ли получить доступ к порту MongoDB из того же модуля?
Привет, Грэм! Итак, я запустил curl $MONGODB_SERVICE_HOST:$MONGODB_SERVICE_PORT на моем модуле mongodb и получил тот же ответ, что и на моем модуле приложения Failed connect to 172.30.173.215:27017; No route to host. Мой кластер находится в центре Канады.
Используйте localhost:27017 в модуле MongoDB. Я хочу убедиться, что он работает изнутри.
В качестве проверки работоспособности, если вы запустите oc describe pod для модуля MongoDB, как будет отображаться IP-адрес? И что вы получаете за oc get endpoints mongodb? Есть ли IP-адрес модуля в этом списке? Также запустите oc describe service mongodb и проверьте те же IP-адреса, указанные там.
Предполагая, что сопоставление IP-адресов службы может быть каким-то образом облажено, попробуйте уменьшить MongoDB до без реплик: oc scale --replicas=0 mongodb. Затем снова вернитесь к 1.
Итак, 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>
уменьшение и увеличение масштаба не сработало. Тот же журнал ошибок
любые другие идеи о том, как это выяснить? Я даже убил весь свой проект и безуспешно начал новый





Из заданной области действия Project запросы, направленные к имени хоста «mongodb», должны направляться на Kubernetes Service с именем «mongodb» (если он доступен).
Чтобы отладить эту проблему с подключением:
env, чтобы вывести список переменных среды, доступных для внешнего интерфейса. Если этот контейнер был запущен после создания службы «mongodb», строки конфигурации должны быть видны в среде.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.
Вы используете IP-адрес для MongoDB в конфигурации клиента, который его использует, или имя хоста. Технически IP-адрес
Serviceне должен меняться, но обычно лучше использовать имя хоста дляService, которое является именем объектаServiceдля экземпляра MongoDB.