具有自动缩放功能的 AWS EC2 实例保持同步

AWS EC2 instances with auto scaling staying in sync

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

几个小时以来,我一直在尝试了解 AWS Auto Scaling 的某些内容,但我似乎无法在任何地方找到答案。

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

因此,如果我通过 SSH 连接到服务器并更改 server.js 文件,其他 3 个实例会怎样?

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

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

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

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

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

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