【问题标题】:Updates on a Node.JS application with AWS Auto-Scaling使用 AWS Auto-Scaling 更新 Node.JS 应用程序
【发布时间】:2020-10-27 13:45:00
【问题描述】:
我正在寻找有关使用自动缩放产生的多个实例时部署 Node.JS 应用程序更新版本的最佳方法的建议。
我的代码托管在 GitHub 上,通常使用 GitHub Actions 进行部署,在特定主机上的 CI 之后推送更新并触发 install/db 更新。
现在我的实例是“变量”,我正在考虑定期进行某种轮询,但这种解决方案不合适,因为它破坏了通常的 CI 流程。
您有什么好的做法来正确设置所有这些吗?
【问题讨论】:
标签:
node.js
amazon-web-services
amazon-ec2
amazon-ami
aws-auto-scaling
【解决方案1】:
您可以在user-data 部分添加脚本来更新或执行任何初始化进程。
您的实例应该能够从 Github 中提取代码,并且 init 脚本将执行必要的操作。
注意:用户数据脚本只会在自动缩放组产生新实例时执行。
例如
#!/bin/bash
cd /app;
git pull;
npm install;
pm2 start myapp.js
【解决方案2】:
您可以考虑使用CodePipepline (CP) 或至少CodeDeploy (CD)。它们似乎非常适合您从 github 进行自动部署的用例。
CP integrates with GitHub,因此您可以将其设置为自动检测您的存储库中的更改。根据您的应用程序的具体情况,您可以拥有或不拥有 CodeBuild (CB),以及要部署到您的实例的 CD。
CDintegrates with Auto Scaling Group,这样设置好了,在群里使用应该没有问题。
第一次进行初始设置可能会很麻烦。但一旦完成,您将获得应用程序自动部署、回滚、通知等的好处。