build议在弹性豆茎上安装mongodb

首先,在你动手之前,我已经看过了如何在Elastic Beanstalk中安装mongodb? date为2014年,不再有效。 以及https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#manually-deploy-mongodb-on-ec2

我在node.js上build立了一个新的弹性beanstalk环境,其中1个ec2微型实例的64位Amazon Linux 2016.03 v2.1.0运行Node.js,

我已经尝试使用ssh连接到我的实例,并使用yum命令安装mongodb软件包:

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

并收到了这个回电话:

 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 

当我第一次进入我的实例时,我收到了这个错误警告:

 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 

目前,我的环境设置为单一实例环境,以节省成本。 但是,将来我会升级到自动扩展环境。

正因为如此,我问是否可以在ec2中通过ssh进行更改,或者我应该只使用EB CLI?

我在本地安装了EC2和EB CLI,但是我从来没有使用过EB CLI。 如果我应该使用EB,有没有人有推荐的方式来安装mongodb?

如果有人正在寻找答案,这里是我从aws业务支持收到的build议。

所有部署到Elastic Beanstalk的代码都必须是“无状态的”IE。不要直接对使用SSH或FTP的正在运行的beanstalk实例进行更改….因为这会导致不一致或数据丢失! – Elastic Beanstalk不是为没有无状态的应用程序devise的。 这个环境的devise是为了在你的networking/ CPU负载上向上和向下扩展,并从一个基本的AMI构build新的实例。 如果实例有问题或底层硬件,Elastic Beanstalk将终止这些正在运行的实例并replace为新的实例。 因此,为什么不能将代码修改“直接”应用于或完成到现有实例,因为新实例不会意识到这些直接改变。 所有更改/代码需要上传到Elastic Beanstalk控制台或CLI工具,并推送到所有正在运行的实例。 有关Elastic Beanstalkdevise概念的更多信息,请阅读以下链接http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html

build议的解决scheme:考虑到上述情况,如果使用MongoDB来存储应用程序数据,我们build议将Node.js应用程序与MongoDB环境进行DE耦合。 IE在Elastic Beanstalk之外创buildMongoDB服务器,例如直接在EC2实例上启动MongoDB,并使用应用程序中的连接设置将Elastic Beanstalk Node.js应用程序连接到MongoDB Server。

创buildMongoDB下面是一些可用于创buildMongoDB服务器场景的示例链接。 在EC2上部署MongoDB, https: //docs.mongodb.org/ecosystem/platforms/amazon-ec2/ MongoDB节点客户端https://docs.mongodb.org/getting-started/node/client/ AWS Cloud上的MongoDB quick开始指南http://docs.aws.amazon.com/quickstart/latest/mongodb/architecture.html

– 将环境variables添加到Elastic Beanstalk以引用您的MongoDB服务器一旦创build了MongoDB服务器,您就可以使用环境variables将所需的连接设置传递到Elastic Beanstalk环境。 使用.ebextensions .config的示例,您可以添加Mongo URL / ports / users等。

option_settings: – option_name:MONGO_DB_URL值:“您的MongoDB EC2内部IP地址”

下面将介绍如何使用环境属性并从应用程序中读取它们的信息。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop使用.ebextensions .config的信息可以在以下链接中findhttp://docs.aws.amazon .COM / elasticbeanstalk /最新/ DG / ebextensions.html

或者,您也可以使用cli或通过AWS控制台设置环境variables。eb cli set环境variables可以通过以下链接读取。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html使用AWS控制台设置系统属性(AWSpipe理控制台)打开Elastic Beanstalk控制台。 导航到您的环境的pipe理控制台。 selectconfiguration。 在“软件configuration”部分中,select“编辑”。 在环境属性下,创build您的名称/值…

访问环境configuration设置在AWS Elastic Beanstalk中运行的Node.js环境中,可以使用类似于以下示例的process.env.ENV_VARIABLE来访问环境variables。 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

总结:总之,我会推荐以下步骤将MongoDB与Elastic Beanstalk环境集成。 步骤1)在Elastic Beanstalk之外创buildMongoDB服务器步骤2)在连接到MongoDB服务器的Elastic Beanstalk中创buildNode.js应用程序