【问题标题】:AWS EC2 instances with auto scaling staying in sync具有 Auto Scaling 的 AWS EC2 实例保持同步
【发布时间】:2020-02-04 19:20:24
【问题描述】:

我有一个 Node.js Web 应用程序,目前在 AWS 上的单个 EC2 实例上运行。我正在考虑对 2 个或更多 EC2 实例使用 Auto Scaling,因为应用程序的负载正在增加。

我已经尝试了解 AWS Auto Scaling 几个小时了,但我似乎无法在任何地方找到答案。

目前,在许多情况下,我通过 SSH 连接到我的 Ubuntu EC2 实例以修改某些内容或运行部署命令(从 gi​​thub 获取最新代码)。当你有 4 个实例在自动缩放下运行时,它是如何工作的?

如果我通过 SSH 连接到服务器并更改 server.js 文件,其他 3 个实例会发生什么情况?

如果不可能,我的选择是什么?我见过很多人认为使用 S3 是保持同步的方法,但我并不完全明白这一点。所以我必须将所有源代码保存在 S3 中并从那里进行编辑?

【问题讨论】:

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


    【解决方案1】:

    一旦文件位于自动缩放组中,您将无法直接在服务器上修改文件。在一台服务器上更改某些内容不会反映在其他服务器上,即使您手动更新了所有当前正在运行的服务器,通过自动缩放操作添加的任何服务器也不会有这些更改。

    有很多方法可以解决这个问题,例如使用AWS Code Deploy

    您还可以通过 EC2 User-Data script 在您的自动缩放配置中进行配置,这些配置将在创建时在每台服务器上运行。该脚本可以从 Git 签出最新的代码,或者从 S3 中提取最新的构建工件,然后启动应用程序。当您准备好部署更新时,您只需将当前实例标记为“不健康”并等待 Auto-Scaling 组自动将它们替换为新的更新实例。

    【讨论】:

      【解决方案2】:

      您可以使用 AWS EFS 来托管您的应用程序代码,并且所有 Web 服务器都将从 EFS 而不是单个服务器获取内容。这样您就不必担心修改单个服务器内容。

      【讨论】:

      • 如何在我的 auto-scaling-group-configuration 中添加 efs 设置,以便在创建新的 ec2 实例时,efs 将与新实例一起自动挂载?
      【解决方案3】:

      一种方法是使用 github。您可以更新您的代码并将其推送到 github,然后终止您现有的实例并让自动缩放组使用更新的代码启动新实例。这是一个 youtube 教程视频,其中有详细的操作步骤:https://www.youtube.com/watch?v=lB3Ip0Yn-Zs

      【讨论】:

      • 请对您的回答进行详细的解释,以便下一个用户更好地理解您的回答。此外,请提供链接内容的基本介绍,以防将来停止工作。
      猜你喜欢
      • 2021-08-25
      • 2021-05-29
      • 2016-02-12
      • 2015-08-16
      • 1970-01-01
      • 2018-10-11
      • 2017-07-05
      • 1970-01-01
      • 2021-02-09
      相关资源
      最近更新 更多