成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Nginx 平滑升級的實戰指南!(含備份+業務0中斷+回滾)

運維
在實際生產環境,安全部門一般都會定期去掃描程序漏洞,基本都需要升級版本。今天我們就分享一下Nginx如何平滑升級,做到零中斷。

今天分享一下Nginx如何平滑升級,做到零中斷。

在實際生產環境,安全部門一般都會定期去掃描程序漏洞,基本都需要升級版本。

部分運維人員的做法是:停服務--> 刪除舊版本nginx-->安裝新版本nginx-->啟動服務。

這種方式需要停服務,非常影響用戶體驗感,所以我下面介紹一下如何進行不停機且安全可控得進行平滑升級Nginx。

1. 實驗環境說明

  • 操作系統:Rockylinux9.4
  • 當前nginx是編譯安裝
  • 部署路徑:/data/nginx
  • 從nginx1.26.2升級到1.29.0

2. 升級前先備份!非常關鍵!

線上升級,沒備份 = 自殺式升級。

全量備份:

tar -zcvf /data/nginx-backup-$(date +%F).tar.gz /data/nginx/

回滾時你只需 tar -zxvf + reload,1 分鐘恢復原狀。

3. 確認原版本和編譯參數

[root@webserver data]# nginx -V
nginx version: nginx/1.26.2
built by gcc 11.5.0 20240719 (Red Hat 11.5.0-5) (GCC) 
built with OpenSSL 3.2.2 4 Jun 2024
TLS SNI support enabled
configure arguments: --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-stream --with-stream_ssl_module

非常重要!新版本必須用相同參數編譯才能平滑替換,不過可以新增參數!

4. 安裝依賴

dnf install -y gcc make zlib-devel pcre-devel openssl-devel wget

這一步可以省略,一般編譯舊版本時已經安裝了依賴。

5. 下載并編譯 Nginx 新版本

(1) 下載源碼

版本可以具體根據漏掃要求,一般是建議最新版本,我這邊選1.29.0版本:

wget https://nginx.org/download/nginx-1.29.0.tar.gz
tar -zxvf nginx-1.29.0.tar.gz
cd nginx-1.29.0

(2) 使用原配置參數重新編譯

這里也可以添加一些新的參數,但是盡量不要刪除以前的參數,建議在已有基礎添加新參數。

./configure --prefix=/data/nginx \
 --with-http_stub_status_module \
 --with-http_ssl_module \
 --with-pcre \
 --with-stream \
 --with-stream_ssl_module

make

注意注意:千萬不要 make install,避免直接覆蓋現有 Nginx!

6. 平滑升級核心流程

(1) 替換 Nginx 可執行文件

# 移動舊版本可執行文件
mv /data/nginx/sbin/nginx /data/nginx/nginx/sbin/nginx.old

# 將新版本的執行文件放置在安裝目錄下
cp ./objs/nginx /data/nginx/sbin/nginx

# 檢測Nginx進程,可見舊的版本進程還在運行
ps -ef |grep nginx

(2)啟動新主進程(平滑切換)

# 殺掉舊版nginx主進程,讓新進程重新生成
kill -USR2 `cat /data/nginx/logs/nginx.pid`

# 上面引用部分主要是找出nginx的PID,你也可以根據ps來找。

此時存在4個進程.  2個舊版nginx進程  2個新版nginx進程。

新的 master 進程加載新版本。

老版本PID文件變為 .pid.oldbin,仍然工作中:

(3) 優雅關閉舊 worker進程

kill -WINCH `cat /data/nginx/logs/nginx.pid.oldbin`

舊worker 會逐步停止服務,連接自動轉移到新版本,舊master進程還在。

7. 驗證是否升級成功

查看版本:

nginx -v

檢查日志無報錯:

tail /data/nginx/logs/error.log

確認監聽端口仍在線:

netstat -lntup |grep nginx

多核 CPU 下也可觀察進程切換:

ps -ef | grep nginx

8. 結束舊主進程

等業務確認OK后,沒問題,就可以殺掉舊的master進程了。

kill -QUIT `cat /data/nginx/logs/nginx.pid.oldbin`

# 再次檢查
ps -ef |grep nginx

此時舊版進程徹底退出,升級完成!

9. 快速回滾操作

如果升級后出問題,只需執行:

cp /data/nginx/sbin/nginx.bak /data/nginx/sbin/nginx
nginx -s reload

也可以恢復整個 Nginx 安裝目錄:根據之前那個備份目錄直接解壓后重載nginx:

tar -zxvf /data/nginx-backup-YYYY-MM-DD.tar.gz -C /
nginx -s reload

謹記:先備份后操作!如果可以測試環境先行!

責任編輯:趙寧寧 來源: 運維李哥不背鍋
相關推薦

2019-03-04 15:36:18

Nginx版本運維

2022-02-22 10:30:53

Jenkinsgit項目

2009-07-23 14:08:46

Windows Emb

2012-10-19 14:07:37

2014-08-27 09:44:26

華為

2011-04-25 09:06:55

亞馬遜EC2

2025-03-28 03:20:00

MySQL數據庫搜索

2025-03-10 00:45:00

2018-01-18 09:34:27

LinuxCentOSYUM

2009-11-16 17:15:12

Oracle減少回滾段

2010-04-16 17:31:22

ORACLE回滾段

2012-12-26 09:36:45

MySQLDelete

2009-12-29 16:25:14

全業務接入網

2009-07-20 18:11:52

iBATIS事務Spring

2009-11-16 13:41:18

Oracle分離回滾段

2017-05-18 16:07:23

回滾數據庫代碼

2022-03-15 11:01:39

KubernetesLinux平滑升級

2024-02-20 09:54:20

MySQL數據庫

2011-07-29 16:21:21

Oracle數據庫回滾段
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费的黄色网址 | 天天操免费视频 | 亚洲91精品 | 欧美日韩精品 | 麻豆做爰免费观看 | 色天堂视频 | 欧美日韩视频在线 | 在线观看日韩欧美 | 激情久久久 | 国产特级淫片免费看 | 日本毛片在线观看 | 国产福利在线观看 | 一级特黄色片 | 国语对白做受69 | 黄色大片在线 | 日韩在线观看一区 | 日韩专区中文字幕 | 中文字幕视频 | 男男成人高潮片免费网站 | 免费成人毛片 | 亚洲精品三级 | 色片在线观看 | 天堂成人网 | 激情小说五月天 | 久久久免费看 | 黄色片在线免费观看 | 色午夜| 精品欧美黑人一区二区三区 | 欧美日韩成人在线观看 | 亚洲黄色小视频 | 亚洲欧美日韩一区 | 国产成人在线免费视频 | 四虎网站在线观看 | 日韩中文字幕免费 | 亚洲一区二区三区在线视频 | 在线精品一区 | 丁香午夜 | 一级片在线播放 | 日本高清在线观看 | 69av在线| 夜夜操天天操 |