• nginx导流进行服务更新流程


    1,确保将要切换的目标服务使用正常。

    2,更改nginx.conf中被代理的虚拟主机地址,将其改为上面的目标服务(可能是测试,可能是线上其他服务器集群中的一台)。

    如 vim /opt/nginx/conf/nginx.conf

    server {

        listen       80;
        server_name  testing.com www.google.com;
    
        #charset koi8-r;
    
        access_log off;
        #access_log  /home/google/logs/nginx/access.log  google;
    
        location / {
                #proxy_pass  http://127.0.0.1:8080;
                proxy_pass  http://192.168.1.99:80;
    
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
                client_max_body_size       5m;
                proxy_connect_timeout      150;
                proxy_send_timeout         150;
                proxy_read_timeout         150;
                proxy_next_upstream        error timeout invalid_header http_500;
                proxy_buffer_size          32k;
                proxy_buffers              32 64k;
                proxy_busy_buffers_size    128k;
        }
    
    }
    

    更改上面的proxy_pass http://192.168.1.99:80为目标服务器地址如:proxy_pass http://192.168.1.100:80

    然后执行/opt/nginx/sbin/nginx -t测试下,如果出现....successfully 字样,则说明配置文件更改没有问题。

    然后执行/opt/nginx/sbin/nginx -s reload , 这个不会有输出信息。

    此时,所有访问www.google.com通过dns解析到99机器上80端口的请求,全部被转到100机器上的80端口。

    注意:为什么强调dns?如果在本地hosts文件中配置了192.168.1.99:80 www.google.com则不会经过dns返回ip地址,直接访问192.168.1.99:80这个地址。

    为什么强调80端口?因为服务器上设置了只有80端口可以被外部访问,请求过来后,机器本地才可以访问自己的任何端口,比如8080,8081...

    流量切换成功!

    执行ps -ef | grep nginx,查看nginx进程的情况:

    google 11366 32142 1 16:47 ? 00:00:06 nginx: worker process is shutting down

    google 11367 32142 0 16:47 ? 00:00:00 nginx: worker process is shutting down

    google 11368 32142 0 16:47 ? 00:00:03 nginx: worker process is shutting down

    google 11369 32142 0 16:47 ? 00:00:05 nginx: worker process is shutting down

    google 11370 32142 1 16:47 ? 00:00:06 nginx: worker process is shutting down

    google 11371 32142 2 16:47 ? 00:00:15 nginx: worker process is shutting down

    google 11372 32142 1 16:47 ? 00:00:07 nginx: worker process is shutting down

    google 11373 32142 1 16:47 ? 00:00:07 nginx: worker process is shutting down

    google 11787 32142 0 16:57 ? 00:00:00 nginx: worker process

    google 11788 32142 0 16:57 ? 00:00:00 nginx: worker process

    google 11789 32142 0 16:57 ? 00:00:00 nginx: worker process

    google 11790 32142 0 16:57 ? 00:00:00 nginx: worker process

    google 11791 32142 0 16:57 ? 00:00:00 nginx: worker process

    google 11792 32142 3 16:57 ? 00:00:00 nginx: worker process

    google 11793 32142 1 16:57 ? 00:00:00 nginx: worker process

    google 11794 32142 0 16:57 ? 00:00:00 nginx: worker process

    上面执行/opt/nginx/sbin/nginx -s reload时nginx会启动和原来相等数量的进程,然后等待原来进程执行完操作在测试shut down.

    待所有线程都shut down后

    开始更新99机器上的服务,在此之前,将99机器上的原来的代码备份!!!切记切记,一定要备份!!!!出现意外情况可以迅速回滚!!!

    启动,查看进程,看启动成功与否。

    在本地hosts配置192.168.1.99 www.google.com可以直接不经过dns访问99机器的服务,看服务正常与否,若正常,再按以上步骤将流量切回。

  • 相关阅读:
    yii 验证码功能的实现
    关于php优化 你必须知道的一些事情
    php实现两分法查找
    Python封装的访问MySQL数据库的类及DEMO
    新学习的Python的代码(while循环)
    基于位运算符的IP和数值转换
    JS数组操作常用方法
    JS输出日历
    PHP程序输出日历
    PHP中计算时间差(上周,上月,去年,昨天等)
  • 原文地址:https://www.cnblogs.com/xu-thinking/p/3666874.html
Copyright © 2020-2023  润新知