這篇文章主要為大家展示了“nginx運(yùn)維中如何平滑升級(jí)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“nginx運(yùn)維中如何平滑升級(jí)”這篇文章吧。
在東勝等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需求定制開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),東勝網(wǎng)站建設(shè)費(fèi)用合理。
你可以在不中斷服務(wù)的情況下-新的請(qǐng)求也不會(huì)丟失,使用新的nginx可執(zhí)行程序替換舊的(當(dāng)升級(jí)新版本或添加/刪除服務(wù)器模塊時(shí))。(推薦學(xué)習(xí):nginx運(yùn)維)
首先,使用新的可執(zhí)行程序替換舊的(最好做好備份),然后,發(fā)送USR2(kill-USR2pid)信號(hào)給主進(jìn)程。
主進(jìn)程將重命名它的.pid文件為.oldbin(比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后執(zhí)行新的可執(zhí)行程序,依次啟動(dòng)新的主進(jìn)程和新的工作進(jìn)程:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313433126nobody0.01368kqreadnginx:workerprocess(nginx)
3313533126nobody0.01380kqreadnginx:workerprocess(nginx)
3313633126nobody0.01368kqreadnginx:workerprocess(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
在這時(shí),兩個(gè)nginx實(shí)例會(huì)同時(shí)運(yùn)行,一起處理輸入的請(qǐng)求。要逐步停止舊的實(shí)例,你必須發(fā)送WINCH信號(hào)給舊的主進(jìn)程,然后,它的工作進(jìn)程就將開(kāi)始從容關(guān)閉:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
一段時(shí)間后,舊的工作進(jìn)程處理了所有已連接的請(qǐng)求后退出,就僅由新的工作進(jìn)程來(lái)處理輸入的請(qǐng)求了:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
這時(shí),因?yàn)榕f的服務(wù)器還尚未關(guān)閉它監(jiān)聽(tīng)的套接字,所以,通過(guò)下面的幾步,你仍可以恢復(fù)舊的服務(wù)器:
發(fā)送HUP信號(hào)給舊的主進(jìn)程-它將在不重載配置文件的情況下啟動(dòng)它的工作進(jìn)程
發(fā)送QUIT信號(hào)給新的主進(jìn)程,要求其從容關(guān)閉其工作進(jìn)程
發(fā)送TERM信號(hào)給新的主進(jìn)程,迫使其退出
如果因?yàn)槟承┰蛐碌墓ぷ鬟M(jìn)程不能退出,向其發(fā)送KILL信號(hào)
新的主進(jìn)程退出后,舊的主進(jìn)程會(huì)由移除.oldbin前綴,恢復(fù)為它的.pid文件,這樣,一切就都恢復(fù)到升級(jí)之前了。
如果嘗試升級(jí)成功,而你也希望保留新的服務(wù)器時(shí),發(fā)送QUIT信號(hào)給舊的主進(jìn)程使其退出而只留下新的服務(wù)器運(yùn)行:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
以上是“nginx運(yùn)維中如何平滑升級(jí)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!