Nodejs API、Docker (Swarm)、可扩展性和存储
Nodejs API, Docker (Swarm), scalability and storage
我用 nodejs 编写了一个 API 并像其他数百万人一样表达,它将在几周内上线。 API 当前在单个 docker 主机上运行,该主机具有一个卷用于包含用户上传的图像的持久数据。
我现在正在考虑有关网络卷的问题的可伸缩性和高可用性设置。我已经阅读了很多关于 NFS 卷和潜在的 docker 群的 S3 驱动程序的文章。
根据我收集到的信息,我整理出了两种可能的 swarm 设置解决方案:
Docker 音量驱动程序
- 我可以将每个 docker 主机连接到 S3 Bucket 或带有组合文件的 EFS 存储
- 即使我移动 VPS 提供商
,连接也应该正常
- 如果我将 NFS 存储放在网络的专用部分(无 S3 或 EFS),则安全性更高
API Multer S3 中间件
- 不需要附加卷,因为 S3 连接是从容器内完成的
- 群和docker管理更容易
- 东西必须重新编程,一些文件需要迁移
- 在 GET 请求中,文件将由 AWS 直接提供,而不是 API
请告诉我你对此的反对意见。我做对了吗还是我错过了什么?我应该走哪条路线?从不同主机安装时,是否需要考虑延迟或权限?
关于 S3、EFS 的提示当然是欢迎的,因为我还没有知识。
我不建议保存到磁盘,而是直接使用 S3 API - 创建存储桶并写入您的应用程序代码。
如果您正在考虑安装单个 S3 存储桶作为您的驱动器,则存在严重的限制。 5Gb 限制。任何时候您以任何方式修改内容,驱动程序都会重新上传整个存储桶。如果有任何争用,则必须重试。几年前,当我尝试这个时,保险丝驱动程序不够稳定,无法用作生产系统的一部分,它们会崩溃,你必须重新安装。这是个好主意,但只能在命令行上用作临时的东西。
至于 NFS,看在上帝的份上,不要对自己这样做,你要为自己承担责任。
EFS 无法真正评论,当它可用时,大多数人刚刚学会使用 S3,而且它更便宜。
我用 nodejs 编写了一个 API 并像其他数百万人一样表达,它将在几周内上线。 API 当前在单个 docker 主机上运行,该主机具有一个卷用于包含用户上传的图像的持久数据。
我现在正在考虑有关网络卷的问题的可伸缩性和高可用性设置。我已经阅读了很多关于 NFS 卷和潜在的 docker 群的 S3 驱动程序的文章。
根据我收集到的信息,我整理出了两种可能的 swarm 设置解决方案:
Docker 音量驱动程序
- 我可以将每个 docker 主机连接到 S3 Bucket 或带有组合文件的 EFS 存储
- 即使我移动 VPS 提供商 ,连接也应该正常
- 如果我将 NFS 存储放在网络的专用部分(无 S3 或 EFS),则安全性更高
API Multer S3 中间件
- 不需要附加卷,因为 S3 连接是从容器内完成的
- 群和docker管理更容易
- 东西必须重新编程,一些文件需要迁移
- 在 GET 请求中,文件将由 AWS 直接提供,而不是 API
请告诉我你对此的反对意见。我做对了吗还是我错过了什么?我应该走哪条路线?从不同主机安装时,是否需要考虑延迟或权限? 关于 S3、EFS 的提示当然是欢迎的,因为我还没有知识。
我不建议保存到磁盘,而是直接使用 S3 API - 创建存储桶并写入您的应用程序代码。
如果您正在考虑安装单个 S3 存储桶作为您的驱动器,则存在严重的限制。 5Gb 限制。任何时候您以任何方式修改内容,驱动程序都会重新上传整个存储桶。如果有任何争用,则必须重试。几年前,当我尝试这个时,保险丝驱动程序不够稳定,无法用作生产系统的一部分,它们会崩溃,你必须重新安装。这是个好主意,但只能在命令行上用作临时的东西。
至于 NFS,看在上帝的份上,不要对自己这样做,你要为自己承担责任。
EFS 无法真正评论,当它可用时,大多数人刚刚学会使用 S3,而且它更便宜。