C# 负载平衡环境中的专用Sitecore CM发布实例

C# 负载平衡环境中的专用Sitecore CM发布实例,c#,content-management-system,sitecore,sitecore6,sitecore7,C#,Content Management System,Sitecore,Sitecore6,Sitecore7,我们需要为Sitecore设置一个负载平衡的CM环境—主要用于故障切换目的,但也适用于负载可能变得太重的情况。我们将为此提供两台服务器。我正在浏览《扩展指南》,他们提到在负载平衡的CM环境中,有必要有一台服务器专门用于发布。这句话说这主要是为了性能,但我听说人们说,除非您设置专用发布实例,否则发布队列不会同步。基于sitecore发布队列的工作方式,我想我理解这一点,但是如果依赖于其中一台服务器,那么拥有负载平衡的CM环境有什么意义呢?虽然它不是一个“站点关闭”依赖项,但它仍然是一个依赖项——有

我们需要为Sitecore设置一个负载平衡的CM环境—主要用于故障切换目的,但也适用于负载可能变得太重的情况。我们将为此提供两台服务器。我正在浏览《扩展指南》,他们提到在负载平衡的CM环境中,有必要有一台服务器专门用于发布。这句话说这主要是为了性能,但我听说人们说,除非您设置专用发布实例,否则发布队列不会同步。基于sitecore发布队列的工作方式,我想我理解这一点,但是如果依赖于其中一台服务器,那么拥有负载平衡的CM环境有什么意义呢?虽然它不是一个“站点关闭”依赖项,但它仍然是一个依赖项——有办法解决这个问题吗

编辑


我这里有一些答案,它们都指向这样一个事实:这可能是性能问题或死锁问题,所以我想我真正的问题是,如何为专用发布实例进行故障切换,因为现在单个发布实例将成为故障的中心点。

据我所知,主要原因是同步和处理事件队列。CM服务器将其本地事件发送到发布服务器,发布服务器将依次处理这些事件、发布和触发远程事件。如果两台服务器都能够发布,那么事件队列将变得极难同步,因为如果没有专用的发布服务器,两台CM服务器几乎可以同时触发两个发布事件

性能也是一个考虑因素,但如果只有一台发布服务器,情况也是如此。在运行时,内容编辑器将注意到可用性问题。这就是为什么建议最好使用3服务器CM设置:2个CM实例和1个发布实例,在这些实例上不进行创作。这也将允许您(在Sitecore 7.2上)执行此操作,但这并不总是现实的,而且您仍然依赖于其中一台服务器,正如您正确声明的那样。但是考虑到事件队列的问题,即使您有10台服务器,我认为您在某些地方也需要这种依赖性

我最近读了这篇老文章,里面有一些非常好的信息


我只读过这篇文章,希望有更多实践经验的人能很快回答,但当我思考这一点时,我得出的唯一结论是,如果“错误”的CM实例失败,那么发布。发布状态必须更新。可能已经准备好补丁配置(.disabled),以便在需要时部署/重命名它,并将其作为灾难恢复计划中的一个步骤。显然需要一些手动干预,正如您所说,这不是“站点关闭”依赖关系。对于我参与的大多数项目来说,这是可以接受的,在这种情况下,前端服务器始终是优先考虑的。

为了清楚起见,如果您在CM环境中进行负载平衡,则必须仅配置该环境中的一个实例来发布。我不记得原因的确切细节,但这可能是出于性能、消除死锁、最小化冗余发布混乱和缓存清除等原因。该实例正在平衡处理来自CMS用户的HTTP请求,但它是该环境中唯一执行发布的实例。我同意如果发布实例失败,则必须更改设置,尽管我必须查看实现,以确定是否有某种方法可以回退或应用逻辑来确定发布实例,而不仅仅是使用设置

这与专用发布实例不同,专用发布实例位于CM环境中,但不处于平衡状态。这适用于发布量非常大的场景,以减轻平衡中实例的发布开销。

引用Sitecore“”文档,第27页

发布CM实例仍然可以是创作实例,也可以是 也可以用作单独负责的专用实例 为了出版。后一个选项可用于分离 出于性能原因从创作CM实例发布, 部署策略,或出于其他考虑。发布操作 可以从环境中的任何CM实例启动。他们是 排队,然后发布实例将它们作为序列拾取

因此,主要出于性能、部署和其他考虑,这也不是“负载平衡”设置,因为sitecore称之为多实例设置,这意味着作者将分别登录到每个实例,而不是让负载平衡服务器确定要使用哪个CM实例