<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近遇到一個比較尷尬而又實際的問題,那就是我們生產環境使用的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程序
此時請求經過測試是負載均衡到這2個master上.
請求2次,第一次負載到新的master,第二次負載到舊的master.
7.確認升級成功,-WINCH 訊號 停止舊版master接收新的請求(此時舊版本nginx master程序沒死,只是停止接收新的請求)
kill -winch 15180
舊版nginx只剩下master程序, 子程序不存在了.
此時多次存取URL, 不會出現負載均衡的情況了.
沒有再出現hello world
8.若要回退版本也很簡單,傳送 kill -HUP 15180(舊nginx master程序)即可
此時舊版和新版nginx都在負載均衡. 把新版本nginx master kill掉即可.
此時新版nginx已經kill -QUIT 即可.
到此這篇關於Nginx生產環境平滑升級的實現的文章就介紹到這了,更多相關Nginx生產環境平滑升級內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45