Nginx进阶-不停服更新

前言

7*24小时不间断的提供对外服务和产品快速迭代是互联网行业的特征,基于需求所有的发布都不能停止当前对外的服务。本文围绕此话题衍生出,不停服上下线工具实现。

看本文前请先看 

作案工具

站点部署

源码下载后,分别部署在两台不同的IIS中,部署不做解释,直接上图

 

Tengine配置

本文演示直接使用淘宝开源Tengine进行配置,而不使用Nginx官网原生加入淘宝开源插件进行配置,如需要使用官网插件形式部署,可以查看开源配置,送飞机票:https://github.com/yaoweibin/nginx_upstream_check_module

常规配置在Nginx初识中已经说明了,其他不做解释,开始上干货

#删除原有默认配置
rm -rf /usr/local/nginx/conf/nginx.conf
#新建空白配置文件
vim  /usr/local/nginx/conf/nginx.conf

插入如下(主要看upstream节点中的check,其他节点不做说明,查看nginx初识文章)

#user  nginx;
worker_processes  2;
error_log  /usr/local/nginx/logs/error.log warn;
pid        /usr/local/nginx/logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;

    upstream iis_pool
    {
        server 10.2.1.111:8011 weight=4 max_fails=2 fail_timeout=10s;
        server 10.2.1.144:8011 weight=4 max_fails=2 fail_timeout=10s;
        check interval=3000 rise=2 fall=2 timeout=20000 type=http;#每隔三秒检查,检查两次失败则整个宕机,检查两次成功则机器正常
        check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\nHost:ng.zhoudemo.com\r\n\r\n";#检查地址  / 斜杠表示根域名,访问http://ng.zhoudemo.com
#当为/ngcheck 表示访问http://ng.zhoudemo/ngcheck检查 check_http_expect_alive http_2xx;#表示httpresponse中响应吗为2xx开头则为正常 keepalive 300;#最大缓存连接数 按需设置 } server { listen 80; server_name ng.zhoudemo.com; location / { proxy_pass
http://iis_pool; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }

保存后,重启ng服务  service nginx restart

最终效果

正常情况如下

此时输入实际IP加端口访问站点后,点击开启/停止服务(开启/停止服务为修改站点静态变量,当为停止时,则访问该路径返回统一的非2xx编码)

 

此时nginx存活检测中每隔3秒自动检测到10.2.1.111:8011服务器响应码错误,将不再提供流量至10.2.1.111服务器,我们可以刷新ng.zhoudemo.com站点,此时流量只会打到10.2.1.144站点,说明停止服务成功。

结尾

流量已经不到10.2.1.111服务器了,我们就是对服务器不管做什么都不影响实际生产平台,我们在实现发布,发布后进行接口或站点校验是否发布正确,如正确在开启服务,至此不停服更新完成,不停服更新在实际使用情况,不可能去记忆如此多生产环境IP端口,可做一个内部管理工具,使用管理工具来操作。

 

posted @ 2018-05-16 15:43  随风ˇ止步  阅读(4135)  评论(0编辑  收藏  举报