我是否需要在ELB后面运行的每个EC2实例上复制代码?

时间:2015-08-21 22:37:40

标签: amazon-web-services amazon-ec2 amazon-elb

嗨,这是一个非常noob的问题,但我试图在AWS上贬低我的Node JS API服务器。 使用在S3上运行的前端连接到的一个m1.large实例,一切正常。 现在我想扩展和放置我的EC2实例,可能还有更多的behing和ELB以及Auto Scaling Group。 我是否需要在每个EC2实例上复制我的服务器代码? 如果是这样,我假设我将不得不创建一个单独的数据库服务器,所有EC2实例将连接到该服务器。 我是对的,任何在亚马逊AWS中有经验的人都可以回答这个问题,我尝试使用谷歌搜索,但大多数链接指向详细的教程,但不回答我的问题。 任何帮助将非常感激。谢谢

3 个答案:

答案 0 :(得分:0)

是的。这基本上是正确的。代码需要在负载均衡器前面的所有实例上。对于数据库,您可能需要查看RDS。

答案 1 :(得分:0)

当然 ..但你肯定可以做.. 这就是为什么有 EFS 卷,它们是多个EC2实例的共享卷,但您必须选择支持它们的区域,因为它们在某些区域可用。作为候选AWS认证架构师,我建议您使用两种以上的选项。

  • 您可以按照第一种方法创建一个EC2实例,将代码放入其中,然后创建一个AMI并使用此AMI通过自动缩放组启动即将推出的EC2。在我看来,糟糕的决定,因为在任何代码更改时你必须继续每一个并放置新代码,然后创建一个新的AMI和一个新的自动缩放配置..很多事情要做,但它会工作。
  • 第二种方法,遵循第一种方法,但不创建AMI,而是将代码上传到私有(我想)Repo,如github,bitbucket,安装SSM以及管理EC2的适当角色以及每次代码更改推送它们使用SSM回购并将它们拉到您的EC2上。当然你可以写一个webhook到bitbucket来调用api并在每个EC2上运行git pull命令。可能最后一句可能是第三种方法,但需要更多编码!!!
  • 最后但并非最不重要!!使用EFS卷将您的代码放在那里,在EC2上安装此卷,在每次启动时添加自动挂载命令,将您的apache httpd主文档更改为指向此EFS /文件夹并使用此配置创建AMI。瞧!每个新的EC2将使用位于此共享/网络卷上的相同代码。每当您需要更改某些内容时,您必须在自动缩放组外的第三个实例上登录一段时间,然后上传您的更改,然后将其关闭,所有EC2将立即采用新代码。当然,您可以在第三种方法之后从回购中提取更改。

也许有更多的方法,我当然使用第三个私人回购,直到现在我还没有遇到任何问题(手指交叉)!

答案 2 :(得分:0)

另一个选择是使用Elastic Beanstalk来部署NodeJs应用程序。以下是NodeJ特有的guide。如果你只使用EC2,这将照顾你需要做的大部分事情。例如:ELB,Autoscaling Cloudwatch等。

对于数据库,您可能希望使用具有只读副本的主从属。另一种选择是评估像DynamoDB这样的NoSql数据库,如果它适合您的用例。 scalability的DynamoDB表由AWS管理,因此您无需担心它。