node.js - nodejs - forma recomendada de instalar mongodb en frijol elástico
node js mongodb tutorial (1)
En primer lugar, antes de que me decidas, ya he echado un vistazo a ¿Cómo instalar mongodb en Elastic Beanstalk? Con fecha de 2014, que ya no funciona. así como https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#manually-deploy-mongodb-on-ec2
He configurado un nuevo entorno elástico beanstalk que se ejecuta en node.js con 1 micro instancia ec2 ''64bit Amazon Linux 2016.03 v2.1.0 ejecutando Node.js''
Ya he intentado usar ssh para conectarse a mi instancia e instalar los paquetes mongodb usando el comando yum:
$ sudo yum install -y mongodb-org-server mongodb-org-shell mongodb-org-tools
y recibió esta llamada de vuelta:
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
Cuando primero ssh ''d en mi instancia, recibí esta advertencia de error:
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
Actualmente mi entorno está configurado como un entorno de instancia única, para ahorrar costos. Sin embargo, en el futuro actualizaré a un entorno de escalado automático.
Debido a esto, estoy preguntando: ¿es recomendable realizar cambios a través de ssh en ec2, o solo debo utilizar EB CLI?
Tengo EC2 y EB CLI instalados localmente, sin embargo, nunca he usado EB CLI antes. Si debería usar EB, ¿alguien tiene una forma recomendada de instalar mongodb?
En caso de que alguien esté buscando una respuesta, aquí está el consejo que recibí del apoyo empresarial de aws.
Todo el código implementado en Elastic Beanstalk debe ser "sin estado" IE Nunca realice cambios directamente en una instancia de beanstalk en ejecución usando SSH o FTP ... ¡Esto provocará inconsistencias y pérdida de datos! - Elastic Beanstalk no está diseñado para aplicaciones que no sean sin estado. El entorno está diseñado para escalar hacia arriba y hacia abajo en función de su carga de red / CPU y crear nuevas instancias a partir de una AMI base. Si una instancia tiene problemas o el hardware subyacente, Elastic Beanstalk terminará estas instancias en ejecución y las reemplazará por nuevas. Por lo tanto, el motivo por el cual no se debe aplicar o hacer ninguna modificación de código "directamente" a una instancia existente ya que las nuevas instancias no serán conscientes 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 se deben enviar a todas las instancias en ejecución. Puede encontrar 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.design.html
Solución sugerida: Teniendo en cuenta lo anterior, si utiliza MongoDB para almacenar datos de la aplicación, nuestra recomendación sería de acoplar el entorno de MongoDB desde su aplicación Node.js. IE Cree un servidor MongoDB fuera de Elastic Beanstalk, por ejemplo, inicie MongoDB directamente en una instancia de EC2 y haga que su aplicación Elastic Beanstalk Node.js se conecte con el servidor MongoDB utilizando la configuración de conexión en su aplicación.
-Creación de MongoDB A continuación se muestran 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 MongoDB https://docs.mongodb.org/getting-started/node/client/ MongoDB en la nube de AWS guía de inicio http://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 las configuraciones de conexión necesarias a su entorno de Elastic Beanstalk usando variables de entorno. Ejemplo utilizando .ebextensions .config que puede agregar Mongo URL / ports / users, etc.
option_settings: - option_name: MONGO_DB_URL valor: "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 enlace http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
Alternativamente, también puede configurar la variable de entorno utilizando el cli o mediante la consola de AWS. Las variables de entorno del conjunto de clics de ebS se pueden leer en el siguiente enlace. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Uso de la consola de AWS Para configurar las propiedades del sistema (AWS Management Console) Abra la consola de Elastic Beanstalk. Navegue a la consola de administración para su entorno. Elija la 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 entorno Dentro del entorno Node.js que se ejecuta en AWS Elastic Beanstalk, puede acceder a las variables de entorno usando process.env.ENV_VARIABLE similar al siguiente ejemplo. process.env.MONGO_DB_URL process.env.PARAM2
Resumen: En resumen, recomendaría los siguientes pasos para integrar MongoDB con los entornos Elastic Beanstalk. Paso 1) Cree un servidor MongoDB fuera de Elastic Beanstalk Paso 2) Cree su aplicación Node.js en Elastic Beanstalk que se conecte a su servidor MongoDB