andy212
(Andy)
1
Discourse 是否支持在独立负载均衡器后端部署多台机器(每台机器运行一个 Docker 容器)?
我需要配置一个 Discourse 环境以应对服务器故障,因此我的标准做法是配置 3 台服务器位于负载均衡器后端(由负载均衡器处理 SSL 证书)。
我已为 Discourse 配置了独立的外部 PostgreSQL 和 Redis 服务器。(所有这些都部署在 Google Cloud Platform 上。)我使用 Discourse 启动器来配置仅包含 Web 服务的 Docker 容器。
- Discourse 是否支持在每台机器上运行多个容器(每个容器位于不同的机器上)?
- 我是否只需将第一台机器上创建的 Docker 容器复制到其他机器上?
- 上传的徽标是如何处理的?
- 上传的徽标、网站图标(favicons)等是否存储在数据库中?
非常感谢大家的帮助。
5 个赞
andy212
(Andy)
3
谢谢 Rafael,非常感谢。
我在负载均衡器上遇到了 SSL 终止的问题。Discourse 将其所有链接都指定为 HTTP。
有没有办法让 Discourse 知道它的链接应该是 HTTPS?
Falco
(Falco)
4
是的,进入 Rails 控制台并使用以下命令将其设置为 https:
cd /var/discourse
./launcher enter app
rails c
SiteSetting.force_https = true
2 个赞
andy212
(Andy)
5
太好了,再次感谢。
我猜我可以在 app.yml 中这样写:
- exec: rails c "SiteSetting.force_https = true"
我对 Rails 一无所知。在我上面的命令中,应该是 ‘rails c’ 还是 ‘rails r’?
2 个赞
Falco
(Falco)
6
我们在示例文件中确实有一个在 Bootstrap 中更改站点设置的示例:
3 个赞
andy212
(Andy)
7
没错,我的命令就是从这里复制的。
最后一个问题:Docker 容器是否被监控?如果 Docker 容器因任何原因停止,launcher 是否已配置为自动重启它?
riking
(Kane York)
8
没错,launcher 会要求 Docker 自动重启容器。
2 个赞
andy212
(Andy)
11
好的。我现在在一台机器上成功运行了 Discourse。我还有另外两台机器。Docker 容器中的 /shared 卷已指向一个 NFS 目录,以便所有机器都能访问上传的文件(尤其是徽标等)。
我已将 Docker 镜像复制到机器 2 和 3(使用 docker save -o app-image local_discourse/app,然后执行 docker load -i app-image)。
我原以为直接运行 ./launcher start app 即可,但它却尝试检查 containers/app.yml 文件。
如果允许机器 2 和 3 对 app.yml 进行检查(并进行修改),然后将其更改写入数据库,我是否会遇到问题?
是否有更好的方法让三台机器运行同一个 Discourse 实例?
1 个赞
pfaffman
(Jay Pfaffman)
14
我设置了环境变量 DISCOURSE_FORCE_HTTPS: true。
6 个赞