2008-09-23 41 views
7

任何人都知道通過capistrano以「滾動」方式重新啓動雜種羣的好方法,例如每次一把雜種犬。如果在這裏有一些等待時間,讓這部雜種加載導軌應用程序,那將是非常棒的。如何滾動重新啓動一羣雜種狗

我已經做了一些搜索,並沒有找到太多,所以尋求幫助之前,我自己深入到mongrel_cluster寶石。

謝謝!

回答

1

蹺蹺板是在Rails Oceania Rubyforge Project中發現的一種寶石,它爲混雜羣集提供了這種功能。然而,該項目有可能從某些位腐不havain患上了自2007年以來還是值得一看釋放甚至只是掐想法:)

1
#!/bin/bash 
for PIDFILE in /tmp/mongrel.*; do 
    PID=$(cat ${PIDFILE}) 
    kill ${PID} 
    ${RUN_MONGREL_CMD} ${PID} 
    sleep 2 
done 
3

我蹺蹺板的方式同意以上軋製方法你在尋找。問題在於,在轉換時,負載均衡可能會在不同版本的應用程序之間來回傳遞用戶,最終導致這種情況。

我們提出的解決方案(在找到SeeSaw之前,我們不使用它們)是從負載平衡器中將一半的雜種離線。關閉它們。更新它們。啓動它們。將這些雜種狗重新放回負載平衡器中,並將另一半放回。關閉下半場。更新下半場。啓動它們。這極大地縮短了您同時運行兩個不同版本的應用程序的時間。 我寫了一個windows bat文件來做到這一點。 (不建議在Windows上部署,順便說一下)

請注意,數據庫遷移可能會使整個方法有點危險,這一點非常重要。如果您只有附加遷移,則可以在部署之前隨時運行這些遷移。如果要刪除列,則需要在部署後執行。如果要重命名列,最好將其分爲創建新列和將數據複製到其中的遷移,以便在部署之前運行,並使用單獨的腳本在部署後刪除舊列。事實上,如果你沒有做出特定的努力來組織它們,通常在生產數據庫上使用你的定期遷移可能是危險的。所有這些都意味着更頻繁的交付,因此每次更新的風險較低,複雜程度較低,但這是另一個迴應的主題。

+0

感謝馬特,是的,我沒有想到提及它,但我肯定會犯錯安全的一面,幾乎任何遷移只是做一個更完整的關機 - 遷移 - 啓動 – 2008-09-25 05:07:14