我是新來的docker,並且在涉及docker時設計一個簡單的實時升級解決方案時遇到一些問題。要求時Docker應用程序實時升級
- 舊服務器
fork()
孩子:目前我使用一個fork()/exec()
基於模式的應用程序實時升級。 - 子服務器
exec()
新的可執行文件,加載新的數據/配置。 - 舊服務器將必要的信息(套接字,內存數據等)傳遞給子級服務器,以便它可以接管服務。
- 舊的服務器在孩子準備好後將停止處理新的請求(舊服務器不會
exit()
ATM)。 - 如果升級成功,手動停止舊服務器(這可以在未來升級直播之前被延遲,直到不久),否則停止子服務器,並通知舊服務器重新啓動處理請求。
正如您所看到的,這種實時升級策略通常不會造成停機,無論升級是否失敗。
我們的大部分服務都是無狀態或者有非常簡單的狀態,所以上面的圖案可以輕鬆實現,這是非常可靠的。
我的問題是如何在Docker中實現上述模式(或類似的東西)?也許我走錯了方向,我都是耳朵。
爲什麼不簡單地在服務器前使用負載平衡器? – hek2mgl
@ hek2mgl我們有,如果涉及負載平衡器,升級過程會更長。由於該系統的即時回滾功能,我們可以自動升級整個系統(幾乎)。如果在自動升級過程中出現任何問題,我們可以關閉所有新服務器並立即重啓舊服務器。 – user416983