2015-06-27 2 views
2

Кажется, что обычная и безопасная практика размещения базы данных отдельно от приложений Meteor. То есть иметь экземпляр EC2 для вашего приложения Meteor и экземпляр EC2 для вашего MongoDB и заставить их разговаривать друг с другом.Хостинг базы данных отдельно для приложений Meteor

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

Я хотел бы сделать это с Amazon EC2 одна, в отличие от использования другой службы 3-й партии, как Compose.io.

Как я могу разместить приложение Meteor и его базу данных отдельно в двух экземплярах EC2 и поддерживать связь между ними?

ответ

2

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

Что касается , то как, вам нужно будет, очевидно, сконфигурировать каждый из ваших экземпляров Amazon EC2, установить метеорит на одном, а MongoDB - на другой. Вам также необходимо настроить VPC (виртуальное частное облако Amazon), чтобы ваш экземпляр MongoDB принимал входящие соединения на любом указанном вами порту (по умолчанию 27017), чтобы ваше приложение Meteor могло подключаться.

После этого вам просто нужно сообщить вашему приложению метеоритов, куда нужно подключиться к базе данных. Самый безопасный способ сделать это будет установить пару переменных окружения, названные MONGODBSERVER и MONGODBPORT, DBUSER, DBPassword и т.п.

Затем вы хотите установить некоторые переменные в вашем сервер Метеор кода, используя что-то вроде:

Meteor.startup(function() { 
    var DbUser = process.env.DBUSER; 
    var DbPassword = process.env.DBPASSWORD; 
    var MongoDBServer = process.env.MONGODBSERVER; 
    var MongoDBPort = process.env.MONGODBPORT; 
}); 

И если вы используете родную MongoDB драйвер, подключение становится тривиальным:

var MongoClient = require('mongodb').MongoClient; 

MongoClient.connect('mongodb://DbUser:[email protected]:MongoDBPort/databasename', function(err, db) { 
    ... 
}); 

Тогда это просто вопрос построения своих моделей Монго, используя что-то вроде:

Temperatures = new Mongo.Collection('temperatures'); 
Temperatures._ensureIndex({temp: 1, time: 1}); 

А затем принимать меры на тех моделях, в отношении к базе данных:

Temperatures.insert({temp: ftemp, time: Math.floor(Date.now()/1000)}); 

Я буду также отметим, что http://modulus.io - действительно достойное решение для размещения в Метеоре. Я бы порекомендовал их, если вы не застряли на использовании экземпляров Amazon EC2, что хорошо, но более сложным для простого приложения.

+0

Вы можете использовать Amazon Linux или Ubuntu для размещения приложения/базы данных Meteor? В руководстве MongoDB кажется, что они предлагают Amazon Linux, но я хотел бы услышать вашу точку зрения на него. –

+0

Это будет во многом зависеть от вашего конкретного варианта использования. Не зная, какие критерии вы ищете, было бы трудно предложить один над другим в этом пункте, не размышляя. Возможно, это тема для другого вопроса? – BeeTee2

+0

Что касается родного драйвера MongoDB, мне нужно будет только беспокоиться об этом для приложений, не связанных с метеоритом, не так ли? Например, приложение iOS или собственное настольное приложение. –

0

Вы должны установить переменные окружения для Монго где размещен

MONGO_URL

MongoDB: //: @hostingproviderurl: порт/ххх autoReconnect = True & connectTimeoutMS = 60000

в Правильный mongodb: // строка url будет предоставлена ​​поставщиком хостинга mongodb.

Смежные вопросы