高可用性/微服务架构

我管理着一个非常活跃的社区,日均用户量达到 18 万,我实在无法再进行垂直扩展了。我们需要进行水平扩展。在有人提出之前,我并不特别在意“官方支持”与否,我只关心技术上是否可行。

目前我们有一个运行 discourse 的 Ubuntu 实例,使用的是官方安装说明的 docker,也使用了 S3 存储以及 CDN 来提供服务。

我计划迁移到一个我正在编写的 NixOS flake。通过深入的资源使用调查,我注意到 CPU 主要受限于 postgres 和 Unicorn 工作进程(我们已经对其进行了优化,在保持性能的同时尽可能降低 CPU 占用。目前有 16 个工作进程)。

内存(MEM)也主要受限于 postgres 和 redis。

如果可能的话,我想将它们全部隔离到 3 台服务器上:
Discourse 前端(带 unicorn)
Redis 服务器
Postgres 服务器

我已经成功地在另一台服务器上搭建了一个带有 postgres 的 discourse 服务器,但不确定是否可以将 redis 移到别处,以及这在性能上是否合理。

是否还有其他人目前这样运行 discourse?

您可以在另一台服务器上运行 Redis,如果您认为这会有所帮助。例如,在 AWS 上使用 AWS Elasticache 是相当普遍的,因此将其放置在您认为具有足够性能和带宽来处理它的任何地方都没有问题。

2 个赞