中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx生產環境平滑升級的方法是什么

發布時間:2023-03-06 15:54:44 來源:億速云 閱讀:118 作者:iii 欄目:開發技術

這篇“Nginx生產環境平滑升級的方法是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx生產環境平滑升級的方法是什么”文章吧。

一.背景

最近遇到一個比較尷尬而又實際的問題,那就是我們生產環境使用的Nginx是Centos6的老古董。業務需求需要加載Nginx的一個模塊來實現,但是版本太老了,需要Nginx1.18之后才能支持,而我們的是Nginx1.12。 那升級Nginx是我們要做的事情。但是在生產環境你要考慮的東西很多,不像測試服,Nginx停掉服務,重新編譯新的版本再啟動。 我們線上的服務需要不間斷地提供服務,否則會對業務產生經濟損失. 那有什么方案能平滑升級Nginx版本呢?

二.升級方案

其實官方早就針對Nginx平滑升級做足了功夫,基本原理就是,啟動新的Nginx(master+worker)進程,之后給舊的master進程發送-USER2指令,這樣就能同時讓新版和舊版本進程同時接收處理請求。之后我們再發送-WINCH給舊進程,讓它停止工作服務(關閉所有舊worker進程,但是舊的master進程沒關,防止后面你遇到問題回滾). 如果確認新Nginx沒問題,那么再手動Kill舊的master進程即可完成平滑升級.

三.操作流程

1.查看-舊版本【nginx 1.12.2】進程信息

[root@k8s-master nginx-1.12.2]# ps aux | grep 'nginx' | grep -v '7月' | grep -v 'grep'

root     15180  0.0  0.0  46136   920 ?        Ss   17:22   0:00 nginx: master process ./nginx-1.12.2/sbin/nginx

nobody   15181  0.0  0.1  46584  4344 ?        S    17:22   0:00 nginx: worker process

主要進程pid:  15180  worker進程15181

2. nginx -V查看舊版本nginx的編譯參數

[root@k8s-master nginx-1.12.2]# nginx-1.12.2/sbin/nginx.old.1.12 -V

nginx version: nginx/1.12.2

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

built with OpenSSL 1.0.2k-fips  26 Jan 2017

TLS SNI support enabled

configure arguments: --prefix=nginx-1.12.2 --with-pcre=/root/nginx-test/pcre-8.45/ --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-stream

[root@k8s-master nginx-1.12.2]#

如果make或者./configure報錯,可以嘗試安裝:  yum install -y gcc-c++

3.備份舊版本二進制nginx程序,  mv nginx nginx.old

mv nginx nginx.old

4.此時我們下載【nginx1.20.2】新版本重新編譯,按照舊版本的編譯參數(或者自己新增編譯模塊)

5.拷貝新生成的二進制nginx, 移動到之前舊版本的nginx路徑覆蓋.

./configure --prefix=/usr/local/ --with-stream  xxxx[模塊列表]

make

&make install

6.發送nginx -USR2 15180(舊版nginx主進程)進行替換,此時存在4個進程.  2個舊版nginx進程  2個新版nginx進程

Nginx生產環境平滑升級的方法是什么

此時請求經過測試是負載均衡到這2個master上.

Nginx生產環境平滑升級的方法是什么

請求2次,第一次負載到新的master,第二次負載到舊的master.

7.確認升級成功,-WINCH 信號 停止舊版master接收新的請求(此時舊版本nginx master進程沒死,只是停止接收新的請求)

kill -winch 15180

Nginx生產環境平滑升級的方法是什么

舊版nginx只剩下master進程, 子進程不存在了.

此時多次訪問URL, 不會出現負載均衡的情況了.

Nginx生產環境平滑升級的方法是什么

沒有再出現hello world

8.若要回退版本也很簡單,發送 kill -HUP 15180(舊nginx master進程)即可

Nginx生產環境平滑升級的方法是什么

Nginx生產環境平滑升級的方法是什么

此時舊版和新版nginx都在負載均衡.  把新版本nginx master kill掉即可.

此時新版nginx已經kill -QUIT 即可.

以上就是關于“Nginx生產環境平滑升級的方法是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋城| 榆树市| 张家港市| 孟连| 沈丘县| 綦江县| 新宁县| 威远县| 台山市| 成武县| 固镇县| 永昌县| 平泉县| 榕江县| 武平县| 昌江| 安龙县| 高安市| 同心县| 汤阴县| 民乐县| 界首市| 亚东县| 法库县| 竹山县| 巴东县| 雷州市| 宁乡县| 安塞县| 汉阴县| 九寨沟县| 探索| 比如县| 崇左市| 莆田市| 莱芜市| 定远县| 任丘市| 钦州市| 灵璧县| 图木舒克市|