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端口,可做一個內部管理工具,使用管理工具來操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM