Nginx的平滑升級

簡介

有時候因為nginx缺少某個模塊芯侥,或者想升級一下版本羡洁,但是你nginx上有運載著一些服務(wù),不能掛掉,這樣掌握nginx的平滑升級就顯得至關(guān)重要了

nginx信號檢測

主進程支持的信號

  • TERM,INT:立刻退出

  • QUIT:等待工作進程結(jié)束在提出社证,

  • KILL:強子終止進程

  • HUP:重新加載配置文件,使用新的的配置啟動工作進程评凝,并逐步關(guān)閉日進程

  • USR1:重新打開日志文件

  • USR2:啟動新的主進程追葡,實現(xiàn)熱升級

  • WINCH:逐步關(guān)閉工作進程

工作進程支持的信號:

  • TERM,INT:立刻退出

  • QUIT:等待請求處理結(jié)束后再退出

  • USR1:重新打開日志文件

原理

  • 在不停掉老進程的情況下肥哎,啟動新進程辽俗。
  • 老進程負(fù)責(zé)處理仍然沒有處理完的請求,但不再接受處理請求篡诽。
  • 新進程接受新請求崖飘。
  • 老進程處理完所有請求,關(guān)閉所有連接后杈女,停止朱浴。

平滑升級nginx

先查看我老nginx的版本

?  /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42 --with-stream

我要把它升級到nginx1.14.0

下載1.14.0nginx
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf  nginx-1.14.0.tar.gz
./configure --prefix=/home/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42 --with-stream  #--prefix的位置必須和老版本的位置一樣
make  #記住這里只能make,不能make install达椰,如果make install翰蠢,會導(dǎo)致原先的配置被覆蓋掉

然后備份原先的二進制啟動文件

mv /home/nginx/sbin/nginx /home/nginx/sbin/nginx_old 
cp /usr/src/nginx-1.11.2/objs/nginx /usr/local/nginx/sbin/ #把編譯好的新的啟動文件復(fù)制進來

首先查看進程

ps -ef |grep  nginx
root      10111      1  0 10:17 ?        00:00:00 nginx: master process ./nginx
nginx     10112  10111  0 10:17 ?        00:00:00 nginx: worker process
root      16669   9963  0 10:54 pts/0    00:00:00 grep --color=auto nginx

然后加載新啟動文件,實現(xiàn)熱升級

kill -USR2 `cat home/nginx/logs/nginx.pid` #發(fā)送USR2信號給nginx master 進程(nginx服務(wù)接收到USR2信號后啰劲,首先會將舊的nginx.pid文件添加后綴.oldbin梁沧,變?yōu)閚ginx.pid.oldbin,然后執(zhí)行新版本的二進制文件啟動服務(wù),如果新的服務(wù)啟動成功蝇裤,系統(tǒng)中將有新舊兩個Nginx服務(wù)共同提供web服務(wù))

ps -ef |grep  nginx
root      10111      1  0 10:17 ?        00:00:00 nginx: master process ./nginx
nginx     10112  10111  0 10:17 ?        00:00:00 nginx: worker process
root      16671  10111  0 10:57 ?        00:00:00 nginx: master process ./nginx
nginx     16672  16671  0 10:57 ?        00:00:00 nginx: worker process
root      16699   9963  0 10:57 pts/0    00:00:00 grep --color=auto nginx

你會發(fā)現(xiàn)有兩個nginx進程廷支,舊的nginx進程還在

通過發(fā)送WINCH信號(平緩?fù)V箇orker process)和QUIT信號(平緩?fù)V筃ginx服務(wù))停止舊的Nginx服務(wù)進程频鉴,逐步關(guān)閉舊進程和舊進程的工作進程

kill -WINCH `cat /home/nginx/logs/nginx.pid.oldbin`
kill -QUIT `cat /home/nginx/logs/nginx.pid.oldbin`

在重新查看進程

ps -ef |grep nginx
root      16671      1  0 10:57 ?        00:00:00 nginx: master process ./nginx
nginx     16672  16671  0 10:57 ?        00:00:00 nginx: worker process
root      16707   9963  0 10:59 pts/0    00:00:00 grep --color=auto nginx

這時候在重新查看版本信息

./nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/home/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42 --with-stream

發(fā)現(xiàn)老的nginx進程已經(jīng)關(guān)閉了,版本也已經(jīng)升級到了nginx1.14.0了恋拍,這就實現(xiàn)了一個業(yè)務(wù)不中斷的熱升級的過程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垛孔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子施敢,更是在濱河造成了極大的恐慌周荐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僵娃,死亡現(xiàn)場離奇詭異概作,居然都是意外死亡,警方通過查閱死者的電腦和手機悯许,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門仆嗦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辉阶,“玉大人先壕,你說我怎么就攤上這事∽惶穑” “怎么了垃僚?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長规辱。 經(jīng)常有香客問我谆棺,道長,這世上最難降的妖魔是什么罕袋? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任改淑,我火速辦了婚禮,結(jié)果婚禮上浴讯,老公的妹妹穿的比我還像新娘朵夏。我一直安慰自己,他們只是感情好榆纽,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布仰猖。 她就那樣靜靜地躺著,像睡著了一般奈籽。 火紅的嫁衣襯著肌膚如雪饥侵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天衣屏,我揣著相機與錄音躏升,去河邊找鬼。 笑死狼忱,一個胖子當(dāng)著我的面吹牛膨疏,可吹牛的內(nèi)容都是我干的盗温。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼成肘,長吁一口氣:“原來是場噩夢啊……” “哼卖局!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起双霍,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤砚偶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洒闸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體染坯,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年丘逸,在試婚紗的時候發(fā)現(xiàn)自己被綠了单鹿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡深纲,死狀恐怖仲锄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情湃鹊,我是刑警寧澤儒喊,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站币呵,受9級特大地震影響怀愧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜余赢,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一芯义、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妻柒,春花似錦扛拨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啤贩,卻和暖如春待秃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痹屹。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工章郁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓暖庄,卻偏偏與公主長得像聊替,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子培廓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 歡迎訪問我的博客,同步更新: 楓山別院說一說Nginx的安裝价匠、啟動当纱、停止 Nginx的安裝 1、Linux上 在L...
    楓山別院閱讀 431評論 0 1
  • 當(dāng)需要給正在運行的Nginx服務(wù)升級踩窖,或者添加或者刪除模塊的時候坡氯。可以在不服務(wù)不中斷的情況下進行操作洋腮。 1箫柳、使用新...
    zhaohw810閱讀 333評論 0 0
  • 周末吃飯,我的老同事問我nginx的平滑升級會么徐矩?我頓時想起來了之前面試過的一道題滞时,考的就是這個問題叁幢。我之前的確也...
    心藍風(fēng)云閱讀 1,122評論 1 1
  • Nginx-1.6.2升級到Nginx-1.7.2 查看目前nginx的相關(guān)配置 下載需要更新的Nginx源碼包w...
    Ke爺閱讀 751評論 0 0
  • http://blog.csdn.net/gnail_oug/article/details/52754491 n...
    不排版閱讀 3,286評論 1 1