使用nginx實現平滑上線

2021-09-12 18:24:55 字數 1078 閱讀 4259

背景介紹:易車的**在部署的時候有幾台機器要走公網,剛開始的時候的方案就是,採用nginx的錯誤狀態碼重試,當然在開發過程中,開發完成,完成測試階段,修復bug後都要重啟後台服務,測試又在測試,每次重啟都要一兩分鐘,平凡的重啟,測試不幹了;所以想到就是部署兩台伺服器;用nginx upstream 模組實現 無感知部署,發現乙個bug,修復;直接部署不會打斷測試;

部署思想:打時間差,就是先後部署這兩台機器,控制好時間,保證有一台機器可以使用;在部署的時候,用了乙個sleep 100  來啟動間隔,間隔是100秒,100秒後台,重新啟動第二台伺服器;

伺服器1  : 172.20.7.89:7001

伺服器2  :  172.20.7.90:7001

廢話不多說,直接上配置檔案 nginx.conf (配置檔案直接上)

upstream serverproxy

server

}

max_fails = 3 fail_timeout=100s  表示 $(100秒)時間內出現$(3次)次失敗,就會把這個機器狀態置為down(下線),就是失敗$(fail_timeout)(100秒)時間後,會重新嘗試啟用這伺服器;

這樣就配置好乙個兩台伺服器負載均衡的配置了;

但是這還是不夠的;因為這樣的話,乙個伺服器要被請求3次才會被下線,也就是說,會有3次錯誤的請求;返回502或者是error;

所以我們還要啟用proxy_next_upstream 功能: 在伺服器返回502,504,錯誤,超時 的時候;允許**到其他伺服器;

啟用該功能需要在nginx.conf中新增 

proxy_next_upstream on

注:就是在部署這兩台伺服器的時候,最好能夠和這邊nginx配置的伺服器失敗重試時間一致;這樣nginx失敗**就不會出錯,使用者也會無感知;

nginx 平滑重啟的實現方法

一 背景 在伺服器開發過程中,難免需要重啟服務載入新的 或配置,如果能夠保證server重啟的過程中服務不間斷,那重啟對於業務的影響可以降為0。最近調研了一下nginx平滑重啟,覺得很有意思,記錄下來供有興趣的同學查閱。二 重啟流程 三 nginx實現 為了驗證nginx平滑重啟,筆者首先嘗試ngi...

C 實現Nginx平滑加權輪詢演算法

很簡單,演算法很經典!1.定義實體類 public struct serverconfig 當前權重 public int current 服務名稱 public string name 2.演算法 public static int nextserverindex serverconfig ser...

使用Nginx實現限流

1.http限流配置 限制請求 請求單個ip,每秒讀50次,寫10次 limit req zone uri zone api read 20m rate 50r s 讀 limit req zone uri zone api write 20m rate 10r s 寫 按ip配置乙個連線 zone...