配置更改后,multi-node discourse setup 中的 sibling nodes 上的一些 settings 无法同步

你好,

在位于负载均衡器后的仅 Web 容器的多节点设置中,注意到某些设置在更改后仅在单个节点上应用(可能是更改时通过负载均衡器连接到的那个节点)。具体注意到以下几点:全局通知全局置顶帖子,以及最新的,更改主题以更新自定义主题时。

因此,最终用户只能在负载均衡器将他们连接到进行更改的同一节点时才能看到更改。这会导致混合页面加载和在某些情况下混乱的站点渲染。

现在的问题是。在进行此类更改后,我是否需要在所有节点上运行 rake 中的某个配置重新加载命令,或者是否需要在运行容器时向容器添加某些特定的环境变量,以便自动重新加载/集群模式能够自动将配置传播到同级节点?

是的,您可以尝试以下操作:

su discourse -c 'bundle exec rake cache:clear'

或者,如果您想进入rails控制台,SiteSetting.refresh! 可能会做同样的事情。

谢谢!我感觉我好像漏掉了什么。有没有哪篇文档提到了在哪些配置更改后需要执行这些操作?我快速浏览了一下文档文章,没有注意到关于这方面或 HA 设置的任何内容。

只是确认一下:你们所有的节点之间是否共享一个 Redis 数据库?这对于 Discourse 的正常运行至关重要。

(其他一些应用程序可以一个节点一个 Redis,但尝试对 Discourse 这样做会导致您描述的那类问题)

是的。Redis 由所有 discourse 节点实例共享。我创建了高可用性设置,因此有单独的 S3/Redis/PostgreSQL。

您是否在 /logs 中看到类似 Global messages on xx timed out, message bus is no longer functioning correctly 的错误消息?

之前,我发现当 Redis 和消息总线运行在不同的主机上时,会发生超时,导致不同 Unicorn 工作进程之间无法同步。

我的解决方法是定期重新加载整个 Unicorn 服务器。

已在所有节点上 grep 搜索了日志,未发现此类日志条目。

啊。毕竟有那些 Global messages on xx timed out, message bus is no longer functioning correctly 消息。但我错误地查看了实际的日志目录。现在查看 Web 界面的日志错误部分时,我确实注意到了您提到的条目。需要习惯 discourse 中不同的错误会显示在不同的地方。Discourse 的 Web 端功能仍然很棒。