Я хочу, чтобы мое приложение Meteor подключалось к удаленной базе данных. Я подумал, что могу развернуть два приложения: одно, которое устанавливает базу данных на сервере, а другое, которое размещает приложение, но подключается к базе данных на другом сервере. У меня проблемы с тем, чтобы это работало, но мне также интересно, рекомендуется ли это или нет? Должен ли я установить базу данных mongodb на сервере без mup / meteor, или я могу использовать mup, чтобы настроить это для меня?
Что я пробовал и не могу приступить к работе:
Я использую два экземпляра amazon ec2 (ubuntu 14.04). Я установил следующие правила безопасности для обоих случаев:
Custom TCP Port: 27017 Source: instance-public-ip-1/32
Custom TCP Port: 27017 Source: instance-public-ip-2/32
HTTP Port: 80 Source: All Addresses
SSH Port: 22 Source: My IP
В файле mup.json для приложения, пытающегося получить доступ к удаленной базе данных, я добавил «MONGO_URL»: «mongodb: // db-instance-public-ip: 27017 / db» в «env», а db - это имя приложение на этом экземпляре.
Приложение Meteor, на котором размещена база данных, развертывается успешно, а приложение Meteor, на котором размещено приложение, - нет. Развертывание завершается неудачно во время «Вызов процесса развертывания», и вот STDERR / STDOUT: (XXX.XXX.XXX.XXX - общедоступный IP-адрес экземпляра)
X Запуск процесса развертывания: НЕ ИСПОЛЬЗУЕТСЯ
-----------------------------------STDERR-----------------------------------
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data
/usr/lib/node_modules/wait-for-mongo/bin/wait-for-mongo:14
throw err;
^
Error: TIMEOUTED_WAIT_FOR_MONGO
at null._onTimeout (/usr/lib/node_modules/wait-for-mongo/lib/waitForMongo.js:20:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
-----------------------------------STDOUT-----------------------------------
56.145:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
----------------------------------------------------------------------------
Сообщите мне, если потребуется дополнительная информация. Вопрос также размещен здесь: https://github.com/arunoda/meteor-up/issues / 450
1 ответ
Изменить: я позволил mongodb прослушивать все интерфейсы, но это угроза безопасности.
По умолчанию, когда развернутый метеор создает базу данных, конфигурации mongodb настроены только на прослушивание соединений на 127.0.0.1 (это параметр bind_ip в mongodb). Изменение этого параметра для прослушивания 127.0.0.1 и частного IP-адреса экземпляра решило проблему, и теперь он успешно развертывает и использует удаленную базу данных. НЕ комментируйте параметр bind_ip, поскольку он позволяет любому подключаться к вашей базе данных. Хорошие правила безопасности по-прежнему не позволят людям подключаться, но рекомендуется следовать «принципу наименьших привилегий» в конфигурации mongodb. .
Чтобы изменить этот параметр, отредактируйте файл /etc/mongod.conf
на экземпляре с базой данных. Добавьте частный IP-адрес экземпляра, на котором размещена база данных, в строку с bind_ip = 127.0.0.1
.
Строки 17-18 из /etc/mongod.conf
после редактирования (XXX.XXX.XXX.XXX - частный IP-адрес экземпляра с базой данных):
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip = 127.0.0.1,XXX.XXX.XXX.XXX
Дополнительную информацию о файле конфигурации mongo можно найти здесь: http: //docs.mongodb .org / manual / reference / configuration-options /.
Я нашел этот файл, запустив db.serverCmdLineOpts()
в оболочке mongo благодаря ответу Адама Комерфорда на этот вопрос: как я могу узнать, какие порты mongo прослушивает из оболочки mongo?.
Похожие вопросы
Связанные вопросы
Новые вопросы
mongodb
MongoDB - это масштабируемая, высокопроизводительная база данных NoSQL с открытым исходным кодом, ориентированная на документы. Он поддерживает большое количество языков и платформ разработки приложений. Вопросы по администрированию сервера можно задать на https://dba.stackexchange.com.