在弹性豆茎上运行 mongo 并连接到它 - 利弊?

Posted

技术标签:

【中文标题】在弹性豆茎上运行 mongo 并连接到它 - 利弊?【英文标题】:Running mongo on elastic beanstalk and connecting to it - pros and cons? 【发布时间】:2020-07-24 08:23:51 【问题描述】:

我有一个 3 层应用程序。我的问题与 aws 上的 spring boot rest api 中间层和 mongodb 后端有关。 我正在考虑在弹性 beantalk/单容器选项中运行 mongodb docker 容器,以扩展后端。

我的 rest api 将作为 docker 容器在单独的弹性 beanstalk 环境中运行。

我的理解是弹性 beanstalk 将根据需要扩展 dockerized mongodb 服务。

高级架构:

前端 - Angular - s3 静态网站托管

中间层 - 3 个 Spring Boot 休息服务 - 3 个独立的环境,其中单个容器 docker 使用弹性 bean stalk 进行缩放。

后端 - Mongodb - 使用弹性豆茎扩展的单个 Docker 容器。

问题:

Qn:这行得通吗?每一层都会扩展吗?休息服务能连接到数据库吗?这要花多少钱?中间层和后端之间会有太多延迟吗?

Qn:这是否是出于某种原因的鲁莽追逐,有一些我没有看到的障碍?我对这种方法的研究几乎没有产生任何结果。有人会阻止甚至尝试这个吗? :)

注意事项:

弹性豆茎似乎以稍高的成本提供了便利。我愿意接受,因为我只是在测试。 Kubernetes/docker swarm 看起来过于复杂和耗时,因为我需要在短期内专注于应用程序功能。

我应该能够将卷映射到 aws 中的物理位置。猜测弹性块存储或 EFS。有什么优缺点或更好的选择吗?

我知道我可以使用薄罐来提高效率。

我已经使用部署在 EC2 上的 mongodb 对其进行了测试。我应该能够将其设置为工作启动配置和自动缩放组。但我认为它会更贵,而且可能需要更多的工作。

【问题讨论】:

【参考方案1】:

我不确定您所说的“使用弹性 bean stalk 扩展的单个 Docker 容器”是什么意思,但如果您打算启动更多运行 MongoDB 的容器,实际情况比这要复杂一些。

虽然 MongoDB 确实可以水平扩展,但当在副本集拓扑中启动新节点时,它会:

必须添加到副本集配置中 需要拥有其他节点已经同步到其上的数据

有一些工具可以同时满足这两个要求,但仅仅启动另一个容器是不够的。

分片集群更加复杂,因为需要将一个节点分配到一个分片中,因此需要做出两个级别的管理决策。

我需要在近期专注于应用功能。

您可以考虑使用 MongoDB Atlas,它将为您处理所有这些问题。有一个free tier 可用。

【讨论】:

同意。管理可扩展的数据库是一项繁重的工作,并且需要大量的知识才能避免麻烦。如果您需要专注于业务逻辑,将其卸载到平台上正是正确之举。

以上是关于在弹性豆茎上运行 mongo 并连接到它 - 利弊?的主要内容,如果未能解决你的问题,请参考以下文章

在弹性豆茎上运行 celery-worker

弹性豆茎上的 wurfl

如何让 phantomjs 安装在弹性豆茎上?

在弹性豆茎上设置 https 代理

无法在弹性豆茎上加载带有瓶子的静态文件

如何在弹性豆茎上更新 python Flask 应用程序?