zoukankan      html  css  js  c++  java
  • 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
    Connection: keep-alive
    Host:ng.zhoudemo.com
    
    ";#检查地址  / 斜杠表示根域名,访问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端口,可做一个内部管理工具,使用管理工具来操作。

  • 相关阅读:
    获取网页源代码
    python下载图片
    vue框架前后端分离项目之登录注册页面及多方式登录、手机号验证码接口等相关内容-121
    django框架前后端混合项目之表设计、数据库及form组件等相关内容-77
    vue框架前后端分离项目之git分支合并及首页登陆注册接口等相关内容-120
    vue框架前后端分离项目之git的使用等相关内容-119
    vue框架前后端分离项目之xadmin、轮播图接口及git的介绍等相关内容-118
    vue框架前后端分离项目之跨域问题及首页搭建等相关内容-117
    vue框架前后端分离项目之框架介绍及前后端配置等相关内容-116
    django框架之自定义中间件及csrf跨站请求伪造等相关内容-75
  • 原文地址:https://www.cnblogs.com/zhoudemo/p/9043426.html
Copyright © 2011-2022 走看看