【问题标题】:How to setup ReactJs, NodeJs, Redis application on AWS如何在 AWS 上设置 ReactJs、NodeJs、Redis 应用程序
【发布时间】:2019-11-05 00:15:10
【问题描述】:
我是 AWS 的新手,对部署完全感到困惑。我这里有
React 用于前端,Nodejs 用于 API,Mongodb 用于数据库,redis 用于会话存储。
- 我可以为每项服务使用 1 个 EC2 吗?或
- 将每个服务划分为不同的 EC2
- 我可以使用 Elastic Beanstalk 环境吗?
在未来不停机的情况下扩展和更新哪个更好?
【问题讨论】:
标签:
amazon-web-services
docker
amazon-ec2
aws-lambda
【解决方案1】:
我可以为每项服务使用 1 个 EC2 吗?
这取决于您的情况,但最好的方法是利用底层 EC2 实例是在单个 EC2 上为 nodejs 和前端应用程序运行多个服务,因为在这种情况下,基于 nodejs 容器的应用程序可以发挥最大的优势。在这种情况下,ECS blue-green deployment 与容器的 dynamic port 可以帮助实现零停机时间的扩展。
将每个服务划分为不同的 EC2
在基于 nodejs 的应用程序中,这种方法对 Redis 和 mongo 没有多大帮助,如果您计划集群和副本,那么这些应用程序也需要持久存储,因此将在每个实例上保留存储,所以我的建议是将 redis 和 mongo DB 保持在守护程序模式,将应用程序保持在副本模式,因为这些应用程序将执行蓝绿部署,而不是 redis 或 Db。
AWS 提供了两种类型的任务来处理这种情况
复制品——
副本调度策略放置并维护所需的
集群中的任务数。默认情况下,服务调度程序
跨可用区分布任务。您可以使用任务放置
自定义任务放置决策的策略和约束。为了
更多信息,请参阅副本。
守护进程——
守护进程调度策略在每个活跃的
满足所有任务放置约束的容器实例
您在集群中指定的。使用此策略时,有
无需指定所需的任务数量,任务放置
策略,或使用 Service Auto Scaling 策略。欲了解更多信息
ecs_services