我将尝试逐步回答这个问题。但请记住,这只是众多设置中的一种,可能无法完全满足您的需求。
拓扑:
- AWS
- 节点.js
- MongoDB
AWS - 您提到您现在正在争取 1000 个用户。您对您的应用程序所说的只是 IOS,因此我们不知道后端数据库必须有多密集(CRUD 操作)。
如果你需要它,我会从可扩展性开始。因此,我强烈建议亚马逊称之为NAT Gateway。这将允许您的 Node.js 位于面向 Internet 的服务器上,而 MongoDB 将位于其后面。这首先是保护 Mongo 免受任何不必要的访问。换句话说,初始设置将是 1 个网关(它将保存 Node.js),暂时让我们称之为网关后面的 Master MongoDB。只能通过网关的 SSH 隧道访问此服务器。它位于 CIDR 地址范围内。
但是,正确设置 NAT 网关并不简单 1-2-3。您确实需要了解亚马逊如何使用路由,当然还有如何正确使用入站和出站规则。
实际的网关服务器(Node.js 服务器)应该在 ElasticIP 上。当您需要扩展到更好的服务器时,这将为您节省很多心痛。每当您对服务器进行关键更改时,您还应该拍摄服务器的快照或实际图像。
至于网关服务器本身。根据您的 Node.js 实际代码,您至少应该选择 t2 介质(micro 根本不会这样做)。至于保护,再次入站和出站规则,并可能在服务器上安装软件防火墙。
我自己也使用其他一些实用程序,但我认为在这里至关重要的是PM2。这将使您的 Node 代码在重新启动时保持运行,并在您扩展到服务器上的更多内核时使生活更轻松。
你没有提到你选择的操作系统,所以我不会触及这个热门话题,只是说,Ubuntu 和 AWS Linux 是明智的选择。
至于现在受网关保护的 MongoDB。这是我可能有点保守的地方,基本上是因为我正在处理你所询问的数字的现实。我个人认为没有理由让 1000 个用户在 MongoDB 上设置集群或分片,直到你看到你的应用程序是否真的起飞。NAT 网关是可扩展的,如果您的应用程序起飞,那么您无论如何都会迁移到 ATLAS 或 Enterprise。但是,如果您要集群(主从),您可以选择 3 或 7(我认为 7 可能是 5)。一个是你的主人。你通过 ssh 隧道进入任何人,就像你通过 ssh 进入你的主人一样(显然是通过不同的 CIDR)。如果你做集群,你必须密切关注mongod.conf 文件和所有可用的参数。
显然还有很多东西要写,当然很多人有不同的意见,这是一件好事。但是,在您完成需要工作的基本设置之前,我会谨慎行事(以及您的每月账单!)。然后,您可以将 Mongo 扩展到集群和分片以及您的 Node.js 应用程序。
简单总结一下:
- AWS 中的入站和出站规则和路由
- 您将使用的操作系统
- 实际服务器和核心配置
- 面向世界的网关服务器上的 Node.js
- 网关后面的 MongoDB 服务器(或集群)。
- 关键:您应该几乎立即在 MongoDB 中创建角色。这也是最后一道防线。在没有设置管理员角色的情况下,永远不要拥有 MongoDB 实例,这样您就可以控制访问或更改数据所需的权限。
祝你好运 - 希望一切都比你想象的更好!