2016-04-25 1 views
20

tout d'abord, avant de me downvote, je l'ai déjà pris un coup d'œil à How to install mongodb in Elastic Beanstalk? du 2014, qui ne fonctionne plus. ainsi que https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#manually-deploy-mongodb-on-ec2méthode recommandée pour installer MongoDB sur beanstalk élastique

J'ai mis en place un nouvel environnement de Beanstalk élastique fonctionnant sur Node.js avec 1 micro EC2 exemple « Amazon Linux 64bit 2016,03 v2.1.0 en cours d'exécution Node.js »

je l'ai déjà essayé d'utiliser ssh de se connecter dans mon exemple et installer les paquets MongoDB en utilisant la commande yum:

$ sudo yum install -y mongodb-org-server mongodb-org-shell mongodb-org-tools 

et reçu ce rappel:

Loaded plugins: priorities, update-motd, upgrade-helper 
No package mongodb-org-server available. 
No package mongodb-org-shell available. 
No package mongodb-org-tools available. 
Error: Nothing to do 

Quand je ssh « s dans mon exemple, je reçu cet avertissement d'erreur:

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH 
WILL BE LOST if the instance is replaced by auto-scaling. For more information 
on customizing your Elastic Beanstalk environment, see our documentation here: 
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html 

Actuellement, mon environnement est configuré comme un environnement d'instance unique, pour économiser sur les coûts. Cependant, à l'avenir, je vais passer à un environnement de mise à l'échelle automatique.

À cause de cela, je vous demande est-il recommandé d'apporter des modifications via ssh dans EC2, ou devrais-je être seulement en utilisant EB CLI?

J'ai EC2 et EB CLI installés localement, mais je n'ai jamais utilisé EB CLI auparavant. Si je devrais utiliser EB, est-ce que quelqu'un a une façon recommandée d'installer mongodb?

+2

Vous ne souhaitez pas installer une base de données sur Elastic Beanstalk. Vous ne devriez même pas apporter de modifications via ssh à votre environnement EB. Ne réalisez-vous pas qu'EB ajoutera et supprimera automatiquement les serveurs de votre environnement? Les nouveaux serveurs ajoutés n'auront pas vos changements, et les anciens serveurs avec des choses comme les bases de données seront supprimés et vous perdrez tout. Lisez ma réponse à cette question pour la bonne façon d'utiliser MongoDB avec Elastic Beanstalk: http://stackoverflow.com/questions/33837610/elastic-beanstalk-deployment-with-mongodb –

+0

Oui, je m'en suis rendu compte. C'est pourquoi j'ai expliqué que je suis en train d'exécuter une seule application serveur, mais je voulais savoir l'installation recommandée pour quand je passerai à la mise à l'échelle automatique. Merci pour le lien. – amyloula

Répondre

31

Dans le cas où quelqu'un cherche une réponse, voici le conseil que j'ai reçu du support d'affaires aws.

Tout le code déployé sur Elastic Beanstalk doit être «sans état». N'apportez jamais de modifications directement à une instance de beanstalk en cours d'exécution à l'aide de SSH ou de FTP .... Cela entraînera des incohérences et/ou des données perdues! - Elastic Beanstalk n'est pas conçu pour une application qui ne soit pas apatride. L'environnement est conçu pour évoluer vers le haut et vers le bas en fonction de votre charge réseau/processeur et pour générer de nouvelles instances à partir d'une AMI de base. Si une instance a des problèmes ou le matériel sous-jacent, Elastic Beanstalk mettra fin à ces instances en cours d'exécution et les remplacera par de nouvelles instances. Par conséquent, pourquoi aucune modification de code ne doit être appliquée ou faite "directement" à une instance existante car les nouvelles instances ne seront pas au courant de ces changements directs. Tous les changements/code doivent être téléchargés sur la console Elastic Beanstalk ou les outils CLI et envoyés à toutes les instances en cours d'exécution. Plus d'informations sur les concepts de conception Elastic Beanstalk peut être lu sur le lien suivant http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html

Solution proposée: Avec ce qui précède à l'esprit, si vous utilisez MongoDB pour stocker des données d'application de notre recommandation serait de découpler l'environnement MongoDB de votre application Node.js. I.E Créez un serveur MongoDB en dehors d'Elastic Beanstalk, par exemple en lançant MongoDB directement sur une instance EC2 et que votre application Elastic Beanstalk Node.js se connecte au serveur MongoDB en utilisant les paramètres de connexion de votre application. -Création MongoDB Vous trouverez ci-dessous quelques exemples de liens pouvant être utilisés dans votre scénario de création d'un serveur MongoDB. Déploiement MongoDB sur EC2, https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ noeud MongoDB client https://docs.mongodb.org/getting-started/node/client/ MongoDB sur le guide de démarrage rapide nuage AWS http://docs.aws.amazon.com/quickstart/latest/mongodb/architecture.html

variables d'environnement -Ajout à Elastic Beanstalk pour référencer votre serveur MongoDB Une fois que vous avez créé votre MongoDB serveur vous pouvez passer les paramètres de connexion nécessaires à votre environnement Elastic Beanstalk en utilisant des variables d'environnement. Exemple d'utilisation .ebextensions .config que vous pouvez ajouter mongo URL/ports/utilisateurs, etc ..

option_settings: - option_name: MONGO_DB_URL valeur: "Votre adresse IP interne MongoDB EC2"

Informations sur la façon de utilisez les propriétés de l'environnement et lisez-les depuis votre application peut être vu ci-dessous. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop et informations à l'aide .ebextensions .config se trouve sur le lien suivant http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

Sinon, vous pouvez également définir la variable d'environnement en utilisant la ligne de commande ou via la console AWS eb cli variables d'environnement peuvent être lus par le dessous lien. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Utilisation d'AWS Console Pour définir les propriétés du système (AWS Management Console) Ouvrez la console Elastic Beanstalk. Accédez à la console de gestion de votre environnement. Choisissez la configuration. Dans la section Configuration du logiciel, choisissez Modifier. Sous Environnement Propriétés, créez votre nom/valeurs ...

Environnement Accès aux paramètres de configuration dans l'environnement Node.js en cours d'exécution AWS Elastic Beanstalk, vous pouvez accéder aux variables d'environnement en utilisant process.env.ENV_VARIABLE semblable au suivant Exemple. process.env.MONGO_DB_URL process.env.PARAM2

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop

Résumé: En résumé, je recommande les étapes suivantes pour intégrer MongoDB avec des environnements Elastic Beanstalk. Étape 1) Créer un serveur MongoDB en dehors de Elastic Beanstalk Étape 2) Créer votre application Node.js dans Elastic Beanstalk qui se connectent à votre serveur MongoDB

+4

Malheureusement, le support commercial d'Amazon a manqué une raison essentielle pour laquelle vous voudriez que mongo soit installé sur le même serveur que le serveur d'applications; Pour utiliser les clusters mongoDB, il est recommandé que les serveurs d'applications exécutent chacun une instance mongos (pas pluriel mais littéralement "mongo s") pour agir comme un proxy. La question d'origine du PO est toujours valide et il serait intéressant de savoir quelle serait la méthode de soutien officielle pour ce faire. – Shaggydev