我即將開始一個項目節點,Express和Mongo,但有一個重要問題需要我先解決。如何在不中斷服務的情況下部署更改?
說我有一個運行的應用程序。遲早,我會再次編碼,並希望部署更改。到目前爲止,我只在開發模式下工作,所以執行^ C並重新啓動服務器並不是問題。
在生產中如何?很明顯,我不能一次性破壞服務器和所有用戶。有沒有以任何方式部署更改而不中斷服務?
我看着像暴發戶和類似的系統,但它不解決問題(或我錯過了什麼?)。我目前正在考慮建立一種故障轉移的,但必須有人已經做到了我面前......
我即將開始一個項目節點,Express和Mongo,但有一個重要問題需要我先解決。如何在不中斷服務的情況下部署更改?
說我有一個運行的應用程序。遲早,我會再次編碼,並希望部署更改。到目前爲止,我只在開發模式下工作,所以執行^ C並重新啓動服務器並不是問題。
在生產中如何?很明顯,我不能一次性破壞服務器和所有用戶。有沒有以任何方式部署更改而不中斷服務?
我看着像暴發戶和類似的系統,但它不解決問題(或我錯過了什麼?)。我目前正在考慮建立一種故障轉移的,但必須有人已經做到了我面前......
如果你關心的可用性,那麼你必須在多個服務器上運行的服務,最好是在不同的物理位置。除部署外,大量事件都可以使單臺服務器脫機。因此,沒有任何問題,您可以將每臺服務器脫機,部署到該服務器並重新聯機。
如果您不在乎可用性,仍然沒有問題。
當然,但如果我至少可以避免每次部署時都要確保將服務關閉,那麼它已經一個不錯的步驟:) – aspyct
好吧,我可能會去一個反向代理nginx的一樣:低內存佔用,能夠處理大量的併發連接,並支持故障轉移時,我終於有一個以上的服務器。
有了這個nginx的反向代理,我可以用更新的源開始一個新的節點過程中,有nginx的切換到新的節點和垃圾的舊版本。
這也將讓我保留在服務器上的應用程序的早期版本,以防萬一新版本太早崩潰......
結帳Forever通過NodeJitsu。它將進程守護進程並在出現故障時自動重新啓動服務器。它還有一個選項可以觀察你的CWD,所以如果你在你的repo中做了「git pull」,你的服務器會重新啓動並使用新的代碼。
我已經在生產中使用這個作爲一種基於拉的服務器型號爲一年多了,並有很少或幾乎沒有問題。
雲部署平臺,如Heroku的和nodejitsu您處理該問題:) –
是的,他們接觸到的計算了。但是,因爲這是一個非營利組織,我想找到最便宜的解決方案:) – aspyct