一:解释nginx的平滑升级

随着nginx越来越流行,并且nginx的优势也越来越明显,nginx的版本迭代也来时加速模式,1.9.0版本的nginx更新了许多新功能,例如stream四层代理功能,伴随着nginx的广泛应用,版本升级必然越来越快,线上业务不能停,此时nginx的升级就是运维的工作了

Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。
这样就很方便地实现了平滑升级。一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块。

二.nginx平滑升级的原理:

多进程模式下的请求分配方式

nginx默认工作在多进程模式下,即主进程启动完成配置加载和端口绑定等动作 ,fork出指定数量的工作进程,这些子进程会持有监听端口文件描述符(fd)并通过在该描述上添加监听事件来接受连接(accept)

信号的接受和处理

nginx主进程在启动完成后进入等待状态,负载相应各类系统消息,如SIGCHLD,SIGHUP.SIGUSR2等

nginx信号简介

主进程支持的信号

TERM,INT:立刻退出

QUIT:等待工作进程结束在提出,

KILL:强子终止进程

HUP:重新加载配置文件,使用新的的配置启动工作进程,并逐步关闭日进程

USR1:重新打开日志文件

USR2:启动新的主进程,实现热升级

WINCH:逐步关闭工作进程

工作进程支持的信号:

TERM,INT:立刻退出

QUIT:等待请求处理结束后再退出

USR1:重新打开日志文件

[root@Centos ~]# yum install -y gcc gcc-c++ pcre-devel openssl-devel zlib-devel

[root@Centos ~]# tar zxvf nginx-1.6.0.tar.gz -C /usr/src/

[root@Centos ~]# cd /usr/src/nginx-1.6.0/
[root@Centos nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@Centos nginx-1.6.0]# make

[root@Centos nginx-1.6.0]# make install

[root@Centos nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/sbin/
[root@Centos nginx-1.6.0]# useradd -M -s /sbin/nologin nginx 
[root@Centos nginx-1.6.0]# nginx 
[root@Centos nginx-1.6.0]# netstat -anput | grep nginx 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19008/nginx: master

目前版本是1.6.0

[root@Centos nginx-1.6.0]# nginx -v
nginx version: nginx/1.6.0

目前版本是1.6.0且只有一个模块,该模式支持nginx状态查询,
[root@Centos nginx-1.6.0]# nginx -V
nginx version: nginx/1.6.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@Centos nginx-1.6.0]# echo "nginx1.6.0" > /usr/local/nginx/html/index.html

[root@Centos nginx-1.6.0]# elinks 192.168.20.167

现在我们 需要jiangnginx版本进行升级 并在不影响业务的情况下添加SSL和pcre模块

[root@Centos ~]# tar zxvf nginx-1.11.2.tar.gz -C /usr/src/

[root@Centos ~]# cd /usr/src/nginx-1.11.2/
[root@Centos nginx-1.11.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=ngiinx --with-http_stub_status_module --with-http_ssl_module --with-pcre

[root@Centos nginx-1.11.2]# make

[root@Centos nginx-1.11.2]# cd
[root@Centos ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old 
[root@Centos ~]# cp /usr/src/nginx-1.11.2/objs/nginx /usr/local/nginx/sbin/

[root@Centos ~]# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old[root@Centos ~]# cp /usr/src/nginx-1.11.2/conf/nginx.conf /usr/local/nginx/conf/nginx.conf

[root@Centos ~]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
[root@Centos ~]# ls /usr/local/nginx/logs/
access.log error.log nginx.pid

[root@Centos ~]# ps aux | grep nginx 
root 19008 0.0 0.0 24324 944 ? Ss 14:07 0:00 nginx: master process nginx
nginx 19009 0.0 0.1 26832 1744 ? S 14:07 0:00 nginx: worker process
root 53194 0.0 0.0 112660 976 pts/0 R+ 14:36 0:00 grep --color=auto ngin

验证nginx是否升级成功

nginx的平滑升级的更多相关文章

  1. 源码安装nginx以及平滑升级

                                                           源码安装nginx以及平滑升级                               ...

  2. nginx的平滑升级,不间断服务

    nginx的平滑升级,不间断服务   Nginx更新真的很快,最近nginx的1.0.5稳定版,nginx的0.8.55和nginx的0.7.69旧的稳定版本已经发布.我一项比较喜欢使用新版本的软件, ...

  3. Nginx的平滑升级记录---适用于编译安装的Nginx

    一.查看自己的Nginx的版本号 [root@localhost sbin]# cd /usr/local/nginx/sbin/ [root@localhost sbin]# ls nginx [r ...

  4. nginx不间断服务平滑升级

    (1)备份旧的nginx和配置文件 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/bak_nginx #备份旧版程序 cp /usr/loc ...

  5. Nginx版本平滑升级方案

    背景:由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复. Nginx平滑升级方案 1.案例采用版本介绍 旧版本 nginx- ...

  6. 对nginx进行平滑升级

    1.查看服务器当前nginx版本 [root@instance-hwl9ix5l licenses]# nginx -v           #查看版本 nginx: nginx version: n ...

  7. 让你的网站免费支持 HTTPS 及 Nginx 平滑升级

    为什么要使用 HTTPS ? 首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密.简单点说在 ...

  8. nginx 平滑升级tengine

    wget  http://tengine.taobao.org/download/tengine-1.5.1.tar.gz //下载Tengine1.5.1版本 tar zxvf tengine-1. ...

  9. nginx平滑重启与平滑升级的方法

    如何实现nginx平滑重启与平滑升级? 平滑重启 kill -HUP `cat /usr/local/www/nginx/logs/nginx.pid` 平滑升级nginx: cd /yujialin ...

随机推荐

  1. Strom序列化机制

    Storm 中的 tuple可以包含任何类型的对象.由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化.反序列化消息对象. Storm 使用 Kryo库对对象 ...

  2. 第一次接触Axure

    现在已经是凌晨4:21了,我的第一份Axure.RP文件终于接近尾声,我带着些许疲倦些许兴奋的状态写下这篇博客,记录我和Axure的初遇.       三天前,我加入了湖南大学金山俱乐部,参加了第一次 ...

  3. 通知栏Notification的整理

    一.介绍 通知栏适用于交互事件的通知,是位于顶层可以展开的通知列表. 二.功能作用 1.显示接收到短消息,及时消息等信息(如QQ.微信.新浪.短信)       2.显示客户端的推送消息(如有新版本发 ...

  4. JAVA基础——类和对象

    java类与对象学习笔记 一.成员变量和局部变量 (1)定义 1.成员变量 在类中定义,用来描述对象将要有什么.(默认的成员变量值为0) 2.局部变量 在类的方法中定义,在方法中临时保存数据. 演示示 ...

  5. 第一个SpringMVC实例和解析(HelloSpringMVC)

    1. 开发步骤: (1)增加Spring支持 下载Spring安装包和其依赖的commons-logging.jar,复制到项目Web应用的lib文件夹(WebRoot/WEB-INF/lib): S ...

  6. python3的正则表达式(regex)

    正则表达式提供了一种紧凑的表示法,可用于表示字符串的组合,一个单独的正则表达式可以表示无限数量的字符串.常用的5种用途:分析.搜索.搜索与替代.字符串的分割.验证. (一)正则表达式语言python中 ...

  7. org.apache.commons.beanutils.BeanMap简单使用例子

    一.org.apache.commons.beanutils.BeanMap; 将一个java bean允许通过map的api进行调用, 几个支持的操作接口: Object get(Object ke ...

  8. 高级Java程序员的技术进阶之路

      据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万.而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大.那么,作为 ...

  9. vijos1037题解

    题目: 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念"9?11"事件,Mr.F决定自己用水晶来搭建一座双塔. Mr. ...

  10. SQL执行过程中的性能负载点

    一.SQL执行过程 1.用户连接数据库,执行SQL语句: 2.先在内存进行内存读,找到了所需数据就直接交给用户工作空间: 3.内存读失败,也就说在内存中没找到支持SQL所需数据,就进行物理读,也就是到 ...