2012-08-08 71 views
3

簡要介紹我們的系統 - 我們的生產CDA系統是由兩個Web服務器web1和web2組成的Web農場。 CMS數據庫是由兩個數據庫節點db1和db2組成的sql集羣。發佈目標「Live」由兩個目標組成 - web1部署者和web2部署者,它們將內容推送到web1和web2站點存儲庫。SDL Tridion 2011在webfarm中取消發佈問題

最近,我們發現在生產SDL Tridion 2011中取消發佈內容的問題。從SDL Tridion取消發佈多個結構組時,System沒有從其中一個Web服務器取消發佈內容。但是,它從其他Web服務器上刪除了內容。反之亦然 - 例如,如果取消發佈操作從web1中刪除內容,則web2中的內容保持不變。如果它從web2中刪除,則內容將保留在web1中。我們在發佈隊列中看到的這個未發佈操作的消息是「成功」

您以前遇到過這類問題嗎?如果您使用類似的策略將內容推送到網站農場,您是否可以讓我知道?

我們在部署者日誌中沒有看到任何特定的錯誤消息,但是我們確實看到如下的一些警告。

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

+0

您是將所有項目類型發佈到文件系統,還是將一些項目(如元數據)發佈到數據庫?如果您正在使用數據庫,您是否爲每個Web服務器使用單獨的數據庫? – Quirijn 2012-08-08 21:15:04

+0

嗨Quirjin,謝謝你的幫助!是的,我們將項目發佈到文件以及數據庫。 CMS數據庫「Tridion CM,Tridion Broker」等在SQL集羣中 - 包含兩個節點db1和db2。 Web服務器,web1和web2連接到sql羣集。 web1和web2沒有單獨的數據庫,而是都指向sql羣集。如果您有更多問題,請讓我知道。 – Krishnakumar 2012-08-08 21:17:33

回答

11

它不支持有兩個部署者指向同一個代理數據庫。如果你仔細想一想,很清楚你的情況如何:

  • 你取消發佈一個結構組(或頁面,或其他)。發佈包將被創建並傳輸給兩個部署者。
  • 部署者A選擇它並開始刪除文件和數據庫記錄
  • 雖然這樣做,但部署者B拿起相同的軟件包,並開始刪除文件(因爲有2個獨立的文件系統而沒有問題)和數據庫記錄。但是這些記錄已被部署者A刪除。
  • 您收到類似於您提交的錯誤。

至少有三種解決方案,這一問題:使用共享文件系統,爲你的兩個web服務器

  1. 開始。然後,您可以關閉其中一個展開器。
  2. 更改兩個部署者之一的cd_storage_conf.xml,並將元數據指向某個虛擬目標(例如文件系統中不會使用的文件夾)。
  3. 爲您的兩個Web服務器設置單獨的代理數據庫。

每種解決方案都有優點和缺點。你需要自己決定。

+0

感謝Quirjin.Your點清楚,它真的幫助。 – Krishnakumar 2012-08-08 21:52:37

+0

我在回答中增加了一些更多的說明。 – Quirijn 2012-08-09 06:53:52

+0

非常感謝Quirjin幫助我。這絕對能解決我的問題,我非常感謝你的幫助。 – Krishnakumar 2012-08-09 14:00:31

0

我也在我之前的一個項目中遇到過同樣的問題。 Quirjin提供了一個不錯的解決方案。

另一種選擇是太設置發佈僅單一的文件系統「A」和使用的工具等,其ROBOCOPY拷貝「A」的對其他文件系統「B」的內容。

相關問題