SDL Tridion 2011在webfarm中取消发布问题

时间:2012-08-08 20:46:10

标签: tridion tridion-2011 tridion-content-delivery

为了让您快速了解我们的系统 - 我们的生产CDA系统是一个Web服务器场,包含两个Web服务器,web1和web2。 CMS数据库是包含两个数据库节点db1和db2的sql集群。发布目标“实时”由两个目标组成 - web1 deployer和web2 deployer,它们将内容推送到web1和web2站点存储库。

最近,我们发现了在生产SDL Tridion 2011中取消发布内容的问题。从SDL Tridion取消发布多个结构组时,系统没有取消发布其中一个Web服务器的内容。但是,它从其他Web服务器中删除了内容。反之亦然 - 例如,如果取消发布操作从web1中删除内容,则内容在web2中保持不变。如果从web2中删除,则内容将保留在web1中。我们在发布队列中看到的针对此取消发布操作的消息是“成功”

你以前遇到过这类问题吗?如果您使用类似的策略将内容推送到webfarm,您是否可以告诉我?

我们在部署日志中没有看到任何特定的错误消息,但是我们确实看到了一些警告,如下所示。

2012-08-08 06:48:59,659 WARN PreCommitPhase - 准备失败:tcm:0-5026-66560错误:org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数;实际行数:0;预期:1 2012-08-08 06:48:59,659 WARN PreCommitPhase - 准备失败:tcm:0-5026-66560错误:org.hibernate.StaleStateException:批量更新从update [0]返回意外行数;实际行数:0;预期:1

感谢您的所有帮助!

谢谢, KK

2 个答案:

答案 0 :(得分:11)

不支持让两个部署者指向同一个代理数据库。如果你仔细想想,很明显你的情况会发生什么:

  • 取消发布结构组(或页面或其他内容)。创建发布包并将其传输给两个部署者。
  • 部署者A选择并开始删除文件和数据库记录
  • 当这种情况发生时,部署者B会选择相同的软件包,并开始删除文件(因为有2个独立的文件系统,所以没有问题)和数据库记录。但这些记录已由部署人员A删除。
  • 您收到的错误就像您提交的错误一样。

此问题至少有三种解决方案:

  1. 开始为两个Web服务器使用共享文件系统。然后,您可以关闭其中一个部署者。
  2. 更改两个部署者之一的cd_storage_conf.xml,并将元数据指向某个虚拟目标(例如,文件系统上不会使用的文件夹)。
  3. 为两个Web服务器设置单独的代理数据库。
  4. 每种解决方案都有利有弊。您需要自己决定。

答案 1 :(得分:0)

我在之前的一个项目中也遇到过同样的问题。 Quirjin提供了一个很好的解决方案。

另一个选项也是仅将发布设置为单个文件系统“A”,并使用robocopy等工具将“A”的内容复制到其他文件系统“B”。