dscat
(Diego)
1
你好,
我对安装说明感到困惑。Discourse 是否支持水平扩展?
例如:在多台服务器上运行 2 个或更多 Docker 容器,每个容器都运行 Discourse?
在 GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub 提供的说明中:
多容器配置更加灵活和稳健,但设置起来也更复杂。多容器设置允许您:
- 在升级到 Discourse 新版本时最大限度地减少停机时间。您可以在网站运行时引导新的 Web 进程,仅在构建完成后切换新镜像。
- 将论坛扩展到多台服务器。
- 添加服务器以实现冗余。
- 让某些必需的服务(例如数据库)在性能更强的硬件上运行。
如果您需要多容器设置,请参阅 samples 目录中的 data.yml 和 web_only.yml 模板。为了简化此过程,launcher 将注入一个名为 DISCOURSE_HOST_IP 的环境变量,该变量将在镜像内部可用。
请问是否有地方可以找到更多关于如何在不同服务器上运行容器(而不是在同一台服务器上运行多个容器)的信息?
谢谢
Falco
(Falco)
2
关于“Discourse 能否发布无需引导(bootstrap)的频繁 Docker 镜像?”有很多相关讨论,详见:Can Discourse ship frequent Docker images that do not need to be bootstrapped?。
其核心要点如下:
-
您需为 PostgreSQL、Redis 和负载均衡器提供外部服务,并配置 app.yml 以使用这些服务,例如参考 使用独立 PostgreSQL 服务器运行 Discourse。
-
在任意位置运行 ./launcher bootstrap app。这将在本地机器上生成一个容器镜像。将该镜像上传至您的容器镜像仓库服务。
-
现在,您可以启动任意数量的实例,并让它们全部运行上一步中导出的镜像。
4 个赞
pfaffman
(Jay Pfaffman)
3
您可以尝试类似在 Apache 旁边运行 Discourse Docker 的方案,并创建两个 Web 容器,其中一个是前置的反向代理。
您也可以使用多站点功能,让单个容器服务于多个站点(使用相同的插件和 Discourse 版本)。这篇帖子介绍了如何在没有外部反向代理的情况下实现这一点。如果您尝试该方法,请在那里留言并告诉我是否成功。我计划在确认其确实可行后,在此处发布相关内容。
在多台服务器上运行容器与上述任一方案类似。您只需部署多个容器,让它们共享相同的 Redis 和 Postgres,并置于负载均衡器之后即可。
大多数情况下,除了Discourse 官方标准安装之外的其他配置均不受支持,因为实现这些方式的可能性无穷无尽。