亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

方式一:通過調節負載均衡權重

負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

Nginx 實現灰度發布的三種方法總結

 

http { 
 upstream cluster { 
 ip_hash; #如果你的系統中沒有使用第三方緩存管理工具 ,建議使用此方式
 server 192.168.1.210:80 weight=5; 
 server 192.168.1.211:80 weight=3; 
 server 192.168.1.212:80 weight=1; 
 } 
 
 server { 
 listen 80; 
 
 location / { 
 
 proxy_next_upstream error timeout;
 proxy_redirect off;
 proxy_set_header Host $host;
 #proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Real-IP $http_x_forwarded_for;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size 100m;
 client_body_buffer_size 256k;
 proxy_connect_timeout 180;
 proxy_send_timeout 180;
 proxy_read_timeout 180;
 proxy_buffer_size 8k;
 proxy_buffers 8 64k;
 proxy_busy_buffers_size 128k;
 proxy_temp_file_write_size 128k;
 proxy_pass http://cluster; 
 } 
 } 
} 

這種方式灰度發布通過weight來實現,但是這種方式只適合修改節點的行為,而且要求應用都是一模一樣的,其實質作用是,節點增加或刪除之后,對負載能力的調節,最終目的是為了讓流量最終保持均衡。

方式二.使用Nginx+lua實現web項目的灰度發布

location / {
 content_by_lua '
 myIP = ngx.req.get_headers()["X-Real-IP"]
 if myIP == nil then
 myIP = ngx.req.get_headers()["x_forwarded_for"]
 end
 if myIP == nil then
 myIP = ngx.var.remote_addr
 end
 if myIP == "公司出口IP" then
 ngx.exec("@client")
 else
 ngx.exec("@client_test")
 end
 ';
} 
 
location @client{
 proxy_next_upstream error timeout;
 proxy_redirect off;
 proxy_set_header Host $host;
 #proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Real-IP $http_x_forwarded_for;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size 100m;
 client_body_buffer_size 256k;
 proxy_connect_timeout 180;
 proxy_send_timeout 180;
 proxy_read_timeout 180;
 proxy_buffer_size 8k;
 proxy_buffers 8 64k;
 proxy_busy_buffers_size 128k;
 proxy_temp_file_write_size 128k;
 proxy_pass http://client;
 
}
location @client_test{
 proxy_next_upstream error timeout;
 proxy_redirect off;
 proxy_set_header Host $host;
 #proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Real-IP $http_x_forwarded_for;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size 100m;
 client_body_buffer_size 256k;
 proxy_connect_timeout 180;
 proxy_send_timeout 180;
 proxy_read_timeout 180;
 proxy_buffer_size 8k;
 proxy_buffers 8 64k;
 proxy_busy_buffers_size 128k;
 proxy_temp_file_write_size 128k;
 proxy_pass http://client_test;
}

由于使用了nginx+lua模塊,這種方式適合很多場景,非常強大,但是問題是你可能需要學習很多lua的語法

方式三.使用http頭信息判斷+權重(灰度值)

http請求傳輸過程中,會自動帶上User-Agent,Host,Referer,Cookie等信息。我們只需要判斷ip地址段,用戶代理,Cookie中的信息等。我們這里以Cookie為例。

當然,這里需要解決兩個問題:

①首次訪問靜態頁面可能不會產生cookie

②我們需要通過代碼動態設置路由

③通過weight控制灰度值

我們可以通過一個例子來解決上述中的②與③的問題

upstream tts_V6 {
 server 192.168.3.81:5280 max_fails=1 fail_timeout=60;
}
upstream tts_V7 {
 server 192.168.3.81:5380 max_fails=1 fail_timeout=60;
}
upstream default { #通過upstream default + weight節點控制權重
 server 192.168.3.81:5280 max_fails=1 fail_timeout=60 weight=5;
 server 192.168.3.81:5380 max_fails=1 fail_timeout=60 weight=1;
}
server {
 listen 80;
 server_name test.taotaosou.com;
 access_log logs/test.taotaosou.com.log main buffer=32k;
 #match cookie
 set $group "default";
 if ($http_cookie ~* "tts_version_id=tts1"){ #動態控制路由
 set $group tts_V6;
 }
 if ($http_cookie ~* "tts_version_id=tts2"){
 set $group tts_V7;
 }
 location / { 
 proxy_pass http://$group;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 index index.html index.htm;
 }
 }

對于問題①,我們可以在index頁面通過script來訪問動態頁面:

<script src="https://test.taotaosou.com/cookieinfo.php" /><script>

此外,我們還要在cookieinfo.php中判斷和生成cookie

<?php
if(!session_id())
{
 session_start();
}
if(!isset($_COOKIE["tts_version_id"]))
{
 $cookieValue = $_SERVER['SERVER_PORT']==5280?"tts1":"tts2";
 setcookie("tts_version_id", $cookieValue, time()+3600, "/");
}
?>

分享到:
標簽:Nginx
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定