我有一个Node.js Web应用程序,当前正在AWS的单个EC2实例上运行。我正在考虑对2个或更多EC2实例使用自动缩放,因为应用程序的负载正在增加。
我已经尝试使用AWS Auto Scaling了几个小时,但似乎无法在任何地方找到答案。
[当前,在许多实例中,我通过SSH进入我的Ubuntu EC2实例以修改某些内容或运行deploy命令(该命令从github获取最新代码)。当您拥有4个在自动缩放下运行的实例时,这是如何工作的?
因此,如果我通过SSH连接到服务器并更改server.js文件,那么其他3个实例会怎样?
如果不可能的话,我有什么选择?我已经看到很多人看到使用S3是使事物保持同步的方式,但我还没有完全理解。所以我必须将所有源代码都保留在S3中,然后从那里进行编辑吗?
一旦文件位于自动扩展组中,您将无法直接在服务器上修改文件。更改一台服务器上的内容不会反映在另一台服务器上,即使手动更新了所有当前正在运行的服务器,通过自动缩放操作添加的任何服务器也不会进行这些更改。
有许多解决方法,例如使用AWS Code Deploy。
您还可以通过自动缩放配置中的EC2 User-Data script配置某些内容,这些内容将在创建每台服务器时运行。该脚本可以从Git签出最新代码,或者从S3中获取最新的构建工件,然后启动应用程序。准备好要部署的更新时,只需将当前实例标记为“不正常”,然后等待Auto-Scaling组将其自动替换为新的更新实例。
您可以使用AWS EFS托管您的应用程序代码,所有Web服务器将从EFS而非单个服务器获取内容。这样,您不必担心修改单个服务器内容。