2016-04-25 14 views
20

Prima di inoltrare la richiesta, ho già dato un'occhiata allo How to install mongodb in Elastic Beanstalk? del 2014, che non funziona più. nonché https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#manually-deploy-mongodb-on-ec2metodo consigliato per installare mongodb su beandalk elastico

Ho installato un nuovo ambiente beanstalk elastico esecuzione su node.js con 1 EC2 micro esempio '64bit Amazon Linux 2016,03 v2.1.0 esecuzione Node.js'

Ho già provato usando SSH per la connessione nel mio esempio e installare i pacchetti mongodb utilizzando il comando yum:

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

e ha ricevuto questa chiamata indietro:

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 

Quando ho ssh 'D nel mio esempio, ho ricevuto questo avviso di errore:

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 

Attualmente il mio ambiente si configura come un unico ambiente di esempio, per risparmiare sui costi. Tuttavia, in futuro eseguirò l'aggiornamento a un ambiente di ridimensionamento automatico.

Per questo motivo, sto chiedendo è consigliabile apportare eventuali modifiche tramite ssh in ec2 o devo solo utilizzare EB CLI?

Ho entrambi CLI EC2 ed EB installati localmente, tuttavia non ho mai usato EB CLI prima. Se dovessi usare EB, qualcuno ha un modo consigliato per installare mongodb?

+2

Non si desidera installare un database su Elastic Beanstalk. Non dovresti nemmeno apportare modifiche tramite ssh al tuo ambiente EB. Non ti rendi conto che EB aggiungerà ed eliminerà automaticamente i server dal tuo ambiente? I nuovi server aggiunti non avranno le tue modifiche e vecchi server con cose come i database in esecuzione verranno cancellati e perderai tutto. Leggi la mia risposta a questa domanda per il modo giusto di usare MongoDB con Elastic Beanstalk: http://stackoverflow.com/questions/33837610/elastic-beanstalk-deployment-with-mongodb –

+0

Sì, l'ho capito. Ecco perché ho spiegato che attualmente sto eseguendo un'applicazione per server singolo, tuttavia volevo sapere l'installazione raccomandabile per quando eseguo l'upgrade al ridimensionamento automatico. Grazie per il link. – amyloula

risposta

31

Nel caso in cui qualcuno stia cercando una risposta, ecco il consiglio che ho ricevuto dal supporto commerciale di aws.

Tutto il codice distribuito su Elastic Beanstalk deve essere "senza stato" I.E. Non apportare mai modifiche direttamente a un'istanza di beanstalk in esecuzione utilizzando SSH o FTP .... Poiché ciò causerebbe incoerenze o perdita di dati! - Elastic Beanstalk non è progettato per applicazioni che non sono apolidi. L'ambiente è progettato per aumentare e diminuire il carico di rete/CPU in sospeso e creare nuove istanze da una AMI di base. Se un'istanza presenta problemi o l'hardware sottostante, Elastic Beanstalk interromperà queste istanze in esecuzione e sostituirà con nuove istanze. Quindi, perché nessuna modifica del codice deve essere applicata o eseguita "direttamente" a un'istanza esistente, poiché le nuove istanze non saranno a conoscenza di queste modifiche dirette. TUTTE le modifiche/codice devono essere caricate sulla console Elastic Beanstalk o sugli strumenti CLI e inviate a tutte le istanze in esecuzione. Maggiori informazioni sul Elastic Beanstalk concetti di design può essere letta al seguente link http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html

Soluzione consigliata: Con quanto sopra in mente, se si utilizza MongoDB per memorizzare i dati delle applicazioni la nostra raccomandazione sarebbe quella di disaccoppiare l'ambiente MongoDB da la tua applicazione Node.js. I.E Creare un server MongoDB al di fuori di Elastic Beanstalk, ad esempio avviare MongoDB direttamente su un'istanza EC2 e fare in modo che l'applicazione Node.js di Elastic Beanstalk si colleghi al server MongoDB utilizzando le impostazioni di connessione nell'app.

-Creazione di MongoDB Di seguito sono riportati alcuni collegamenti di esempio che potrebbero essere utili per lo scenario per la creazione di un server MongoDB. Deploy MongoDB su EC2, https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ MongoDB cliente nodo https://docs.mongodb.org/getting-started/node/client/ MongoDB sulla guida rapida AWS cloud http://docs.aws.amazon.com/quickstart/latest/mongodb/architecture.html

variabili d'ambiente -Aggiunta a Elastic Beanstalk a riferimento il server MongoDB Dopo aver creato il vostro MongoDB Server voi può passare le impostazioni di connessione necessarie all'ambiente Elastic Beanstalk utilizzando le variabili di ambiente. esempio con .ebextensions .config che è possibile aggiungere Mongo URL/ports/utenti ecc ..

option_settings: - option_name: MONGO_DB_URL valore: "Il tuo indirizzo IP interno MongoDB EC2"

informazioni su come utilizzare le proprietà dell'ambiente e leggerle dall'interno dell'applicazione può essere visto di seguito. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop E informazioni utilizzando .ebextensions .config si possono trovare al seguente link http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

In alternativa è anche possibile impostare la variabile di ambiente utilizzando la CLI o tramite l'AWS Console eb cli variabili d'ambiente possono essere lette per il seguito collegamento. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Utilizzo della Console AWS Per impostare le proprietà di sistema (Console di gestione AWS) Aprire la console Elastic Beanstalk. Passare alla console di gestione per il proprio ambiente. Scegli Configurazione. Nella sezione Configurazione software, selezionare Modifica. In Proprietà Ambiente, creare il tuo nome/valori ...

accedere alle impostazioni di configurazione Ambiente All'interno l'ambiente Node.js esecuzione in AWS Elastic Beanstalk, è possibile accedere alle variabili di ambiente utilizzando process.env.ENV_VARIABLE simile al seguente esempio. 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

Sommario: In sintesi mi sento di raccomandare le seguenti misure per integrare MongoDB con gli ambienti Elastic Beanstalk. Passaggio 1) Creare un server MongoDB all'esterno di Beanstalk elastico Passaggio 2) Creare l'applicazione Node.js in Elastic Beanstalk che si connette al server MongoDB

+4

Sfortunatamente, il supporto aziendale di Amazon mancava un motivo fondamentale per cui si desidera che mongo sia installato sullo stesso server del server dell'app; per utilizzare i cluster mongoDB, si raccomanda che i server delle applicazioni eseguano ognuno un'istanza mongos (non plurale ma letteralmente "mongo s") che funga da proxy. La domanda originale dei PO è ancora valida e sarebbe interessante sapere quale sarebbe il metodo di supporto ufficiale per gestirlo. – Shaggydev

Problemi correlati