簡體   English   中英

將代碼推送到生產環境時保持服務器網關處於活動狀態

[英]Keep server gateway alive when pushing code to production

所以這是我最近遇到的事情,因為這經常發生在我身上,而且不得不讓辦公室里的每個人都知道由於我將代碼推送到生產環境而導致服務器停機,這有點煩人。 這通常只發生在熱修復/錯誤修復期間。 我在網上搜索了這個問題,但實際上並沒有太多關於如何做這樣的事情的信息。 有沒有辦法在我將代碼推送到生產環境而不中斷服務的情況下保持服務器網關正常運行?

我正在運行一個使用expressReact應用程序,該應用程序托管在AWS EC2服務器上,我在該服務器上提取代碼並重新啟動應用程序。 如果有幫助的話,我還使用NGINX作為我服務器的網關。

我唯一能想到的是,如果有一種方法可以在我推送新代碼時讓服務器識別出應用程序已中斷並使用舊代碼。 推送新代碼后,它會識別出應用程序再次運行,而是在不中斷服務的情況下使用新代碼運行它。

這可能是一個非常模糊的描述,但希望有人能理解我在這里想要表達的意思。 如果有人有任何建議,我將不勝感激。 謝謝!

您通常需要運行服務器的多個實例,因此您配置路由器或負載平衡器,以便一個實例是主要實例(接收所有傳入請求),當另一個實例完成處理它正在處理的任何請求時,您可以停止它並升級它,然后啟動新升級的服務器,然后反向升級另一個實例。

這兩個實例可以始終運行並且每個都服務於一些新請求,或者第二個實例只能在升級過程中使用。

這是一個簡化的序列:

  1. 創建升級的服務器實例(在磁盤上的新目錄位置)
  2. 啟動那個服務器
  3. 配置負載均衡器或路由器以將所有新傳入請求路由到新升級和啟動的服務器實例
  4. 等到原始服務器實例完成為它正在處理的所有請求提供服務(此時它應該沒有新的傳入請求),然后將其關閉。
  5. 如果你一次只打算保持一個服務器實例運行,那么刪除原始服務器實例的代碼,這樣它就不會意外地被再次使用,這樣你就只使用新升級的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM