Comment puis-je configurer MongoDB sur un Node.js serveur à l'aide d'un noeud-mongodb-natif dans un EC2 environnement?
J'ai obtenu de l'aide de beaucoup de gens ici, et maintenant, j'ai envie de contribuer en retour. Pour ceux qui ont du mal à faire un Node.js serveur de travailler avec MongoDB, voici ce que j'ai fait.
Par la manière, c'est juste la pointe de l'iceberg. Je reste à explorer 1) comment faire reproduire mongoDB, 2) comment faire reproduire mongoDB localement, 3) comment faire sharding, 4) de plusieurs instances et l'équilibrage de la charge, 5) comment gérer plusieurs instances avec nodejs serveur, 6) comment gérer les données locales dans chaque instance. Il y a beaucoup de choses que j'ai à regarder. 🙂 Si vous avez une référence, s'il vous plaît laissez-moi savoir.
pour l'équilibrage de la charge d'utilisation HAProxy: stackoverflow.com/questions/4360221/...
mongodb a besoin de fonctionner sur son propre exemple, si vous avez de la planification à l'équilibre de la charge de votre nœud de l'application à l'aide de HAProxy. Il facilite l'éclat de votre base de données.
ok. Je vais jeter un oeil. Savez-vous si je utiliser AWS service d'équilibrage de charge, ça va fonctionner? aussi, je ne comprends toujours pas une chose. Si chaque instance enregistrer les données en local, alors c'est dire si j'ai 10 cas, alors il vous fera économiser dans 10 lieux? et chaque instance peut avoir différentes données?
S'il vous plaît mettre cela sous la forme d'une question, de passer ensuite la réponse de la partie vers le bas pour une réponse. J'apprécie ce que vous êtes en train de faire, mais s'il vous plaît garder dans la forme de Q&A. Merci.
pour l'équilibrage de la charge d'utilisation HAProxy: stackoverflow.com/questions/4360221/...
mongodb a besoin de fonctionner sur son propre exemple, si vous avez de la planification à l'équilibre de la charge de votre nœud de l'application à l'aide de HAProxy. Il facilite l'éclat de votre base de données.
ok. Je vais jeter un oeil. Savez-vous si je utiliser AWS service d'équilibrage de charge, ça va fonctionner? aussi, je ne comprends toujours pas une chose. Si chaque instance enregistrer les données en local, alors c'est dire si j'ai 10 cas, alors il vous fera économiser dans 10 lieux? et chaque instance peut avoir différentes données?
S'il vous plaît mettre cela sous la forme d'une question, de passer ensuite la réponse de la partie vers le bas pour une réponse. J'apprécie ce que vous êtes en train de faire, mais s'il vous plaît garder dans la forme de Q&A. Merci.
OriginalL'auteur murvinlai | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Cela a été posté par la question asker. Un mod lui a demandé dans les commentaires pour poster une réponse, mais n'a obtenu aucune réponse. Donc, j'ai nettoyé et je suis de poster moi-même.
Lorsque vous regardez le code, vous remarquerez que le
createServer
code est à l'intérieur dedb.open
. Il ne fonctionnera pas si vous l'inverser. Aussi, ne fermez pas la connexion db. Sinon, après la première fois, la db connexion ne sera pas ouvert de nouveau. (Bien sûr,db.open
est déclarée en dehors decreateServer
.) Je n'ai aucune idée de pourquoicreateServer
est à l'intérieur dedb.open
. Je suppose que cela peut avoir à faire avec de ne pas ouvrir trop de db connections?Aussi, un problème que j'ai le visage, c'est que quand je le lance via SSH, même si je lance le serveur en arrière-plan (par exemple,
$ node server.js &
), après 2,5 heures, le serveur meurt (pas l'exemple). Je ne sais pas si c'est à cause de terminal de connexion ou quoi.Voici la procédure & code
Environnement: EC2, AMS-Linux-AMI
But: Prendre une requête HTTP et le journal de la requête, l'IP et le timestamp dans MongoDB.
Étapes
1) Après la création de l'instance (serveur), installer gcc.
2) Télécharger Node.js les fichiers et les décompresser. (J'ai utilisé la version 2.6.)
J'ai renommé le dossier décompressé juste "nodejs"
make
prend beaucoup de temps.... Après cela, vous pouvez essayer d'exécuter l'échantillon dans nodejs.org3) Installer MongoDB. J'ai installé la version 1.6.5, 1.7.
J'ai renommé le dossier "mongodb"
Exécuter la db processus:
Ensuite, si vous le souhaitez, vous pouvez courir et essayer de sortir de la ligne de commande. Reportez-vous à MongoDB du site.
4) je vous recommande de créer votre propre OBJECTIF basé sur votre instance. Il va prendre 20 minutes. Ensuite, recréez l'installer et exécuter MongoDB nouveau.
5) Installer
node-mongodb-native
J'ai renommé le dossier à
node-mongodb-native
6) Voici le code pour le serveur:
Cela peut ne pas être parfait code, mais il fonctionne. Je ne suis pas encore habitué à la "niche" ou LISP genre de style de codage. C'est pourquoi j'ai triché et utilisé
global.inData
pour transmettre des données. 🙂Ne pas oublier de mettre
res.end("")
dans l'emplacement approprié (où vous pensez que la requête HTTP appel devrait être terminé).OriginalL'auteur
Par ailleurs, la réponse que j'ai posté ci-dessus fonctionne pour CentOS et Fedora.
Pour les personnes qui ont Ubuntu, c'est ici:
Ensuite, il suffit de l'installer node.js et mongodb comme décrit ci-dessus.
Aussi, après quelques mois de développement, - je trouver de l'aide "mnp", "l'express" et "la mangouste" peuvent amener ma vie beaucoup plus facile. Aussi, j'ai installé d'autres outils, comme le débogueur.
De référence:
http://npmjs.org
http://expressjs.com
http://mongoosejs.com
OriginalL'auteur murvinlai
On dirait qu'il ya peut-être un bug. Il ne me permet pas d'utiliser un var pour le premier argument en a:b à l'intérieur de la collection.insert({
Il est le traitement de première agument comme " a " ou un, codé en dur, de toute façon.
Je vais examiner cette question et de publier un correctif sur github
OriginalL'auteur