sql >> Base de Datos >  >> NoSQL >> MongoDB

forma recomendada de instalar mongodb en beanstalk elástico

En caso de que alguien esté buscando una respuesta, este es el consejo que recibí de AWS Business Support.

Todo el código implementado en Elastic Beanstalk debe ser "sin estado", es decir, Nunca realice cambios directamente en una instancia de beanstalk en ejecución mediante SSH o FTP... ¡Ya que esto causará inconsistencias o pérdida de datos! - Elastic Beanstalk no está diseñado para aplicaciones que no son sin estado. en su red/carga de CPU y cree nuevas instancias desde una AMI base. Si una instancia tiene problemas o el hardware subyacente, Elastic Beanstalk finalizará estas instancias en ejecución y las reemplazará con instancias nuevas. Por lo tanto, no se debe aplicar ni realizar ninguna modificación de código "directamente" a una instancia existente, ya que las nuevas instancias no estarán al tanto de estos cambios directos. TODOS los cambios/código deben cargarse en la consola de Elastic Beanstalk o en las herramientas de la CLI y enviarse a todas las instancias en ejecución. Puede leer más información sobre los conceptos de diseño de Elastic Beanstalk en el siguiente enlace http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts .diseño.html

Solución sugerida:con lo anterior en mente, si usa MongoDB para almacenar datos de la aplicación, nuestra recomendación sería DESacoplar el entorno MongoDB de su aplicación Node.js. Es decir, cree un servidor MongoDB fuera de Elastic Beanstalk, por ejemplo, inicie MongoDB directamente en un Instancia EC2 y haga que su aplicación Elastic Beanstalk Node.js se conecte al servidor MongoDB usando la configuración de conexión en su aplicación.

-Creación de MongoDB A continuación hay algunos enlaces de ejemplo que pueden ser útiles para su escenario para crear un servidor MongoDB. Implemente MongoDB en EC2, https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ Cliente de nodo de MongoDB /cliente/ Guía de inicio rápido de MongoDB en la nube de AWShttp://docs.aws .amazon.com/quickstart/latest/mongodb/architecture.html

-Agregar variables de entorno a Elastic Beanstalk para hacer referencia a su servidor MongoDB Una vez que haya creado su servidor MongoDB, puede pasar la configuración de conexión necesaria a su entorno de Elastic Beanstalk usando variables de entorno. Ejemplo usando .ebextensions .config que puede agregar Mongo URL/puertos/usuarios etc..

option_settings:- option_name:MONGO_DB_URLvalue:"Su dirección IP interna de MongoDB EC2"

La información sobre cómo usar las propiedades del entorno y leerlas desde su aplicación se puede ver a continuación.http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop Y la información que usa .ebextensions .config se puede encontrar en el siguiente enlacehttp ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

Alternativamente, también puede establecer la variable de entorno utilizando la cli o a través de AWS Consoleeb. Las variables de entorno del conjunto de cli se pueden leer en el siguiente enlace.http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Uso de la consola de AWSPara configurar las propiedades del sistema (Consola de administración de AWS)Abra la consola de Elastic Beanstalk.Navegue hasta la consola de administración de su entorno.Elija Configuración.En la sección Configuración de software, elija Editar.En Propiedades del entorno, cree su nombre/valores...

Acceso a los ajustes de configuración del entornoDentro del entorno Node.js que se ejecuta en AWS Elastic Beanstalk, puede acceder a las variables del entorno mediante process.env.ENV_VARIABLE similar al siguiente ejemplo.process.env.MONGO_DB_URLprocess.env.PARAM2

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

Resumen:En resumen, recomendaría los siguientes pasos para integrar MongoDB con entornos de Elastic Beanstalk. Paso 1) Cree un servidor MongoDB fuera de Elastic BeanstalkPaso 2) Cree su aplicación Node.js en Elastic Beanstalk que se conecte a su servidor MongoDB