我是AWS的新手,对部署完全感到困惑。我在这里
对前端起作用,对API使用Nodejs,对数据库使用Mongodb,对会话存储使用Redis。
- 我可以为每项服务使用1个EC2吗?或
- 将每个服务划分为不同的EC2
- 我可以使用Elastic Beanstalk环境吗?
哪种是在将来不停机的情况下进行扩展和更新的更好选择?
我是AWS的新手,对部署完全感到困惑。我在这里
对前端起作用,对API使用Nodejs,对数据库使用Mongodb,对会话存储使用Redis。
哪种是在将来不停机的情况下进行扩展和更新的更好选择?
我可以为每个服务使用1个EC2吗?
这取决于您的情况,但是最好的方法是利用基础EC2实例是在单个EC2上为nodejs和前端应用程序运行多个服务,因为在这种情况下,基于nodejs容器的应用程序会发挥最大的优势。在这种情况下,ECS blue-green deployment和容器的dynamic port可以帮助在零停机时间内进行扩展。
将每个服务划分为不同的EC2
在基于Node.js的应用程序中,此方法对Redis和mongo的使用无济于事,如果您打算进行群集和复制,则这些方法也很有意义,而且这些应用程序需要持久存储,因此将在每个实例上保持存储,所以我的建议是将redis和mongo DB保持在守护程序模式,将应用程序保持在副本模式,因为这些应用程序将进行蓝绿色部署,而不是redis或Db。
AWS提供了两种类型的任务来处理此类情况
REPLICA —
副本计划策略放置并维护所需的副本 整个集群中的任务数。默认情况下,服务调度程序 将任务分散在可用区中。您可以使用任务放置 定制任务放置决策的策略和约束。对于 详细信息,请参阅副本。
DAEMON-
守护程序调度策略在每个活动服务器上仅部署一个任务 满足所有任务放置约束的容器实例 您在集群中指定的内容。使用这种策略时, 无需指定所需的任务数,任务位置 策略,或使用服务自动扩展策略。有关更多信息