国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nginx負載均衡策略選擇指南

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-08-20 16:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

生產環境踩坑實錄:Nginx負載均衡策略選擇指南

前言:作為一名摸爬滾打5年的運維工程師,我在生產環境中見過太多因為負載均衡策略選擇不當導致的"血案"。今天就來聊聊Nginx最常用的兩種負載均衡策略的真實對比,絕對干貨!

真實場景:一次生產故障引發的思考

上個月,我們的電商系統在大促期間突然出現用戶購物車數據丟失的問題。經過排查發現,罪魁禍首竟然是負載均衡策略配置不當!

故障現象

? 用戶添加商品到購物車后,刷新頁面商品消失

? 用戶登錄狀態不穩定,頻繁要求重新登錄

? 系統負載分布極不均勻,部分服務器CPU飆升至90%

這讓我深刻意識到,負載均衡策略的選擇絕不是隨意的!

核心知識:兩大主流策略深度解析

1. 加權輪詢(Weighted Round-Robin)

工作原理:根據服務器權重,按比例分發請求

upstreambackend {
 server192.168.1.10:8080weight=3;
 server192.168.1.11:8080weight=2;
 server192.168.1.12:8080weight=1;
}

server{
 listen80;
 server_nameexample.com;
 
 location/ {
   proxy_passhttp://backend;
   proxy_set_headerHost$host;
   proxy_set_headerX-Real-IP$remote_addr;
  }
}

適用場景

? 服務器性能差異明顯

? 無狀態應用(如API服務)

? 需要靈活控制流量分配

2. IP哈希(IP Hash)

工作原理:根據客戶端IP的哈希值,將請求固定分發到特定服務器

upstreambackend {
  ip_hash;
 server192.168.1.10:8080;
 server192.168.1.11:8080;
 server192.168.1.12:8080;
}

server{
 listen80;
 server_nameexample.com;
 
 location/ {
   proxy_passhttp://backend;
   proxy_set_headerHost$host;
   proxy_set_headerX-Real-IP$remote_addr;
   proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
  }
}

適用場景

? 有狀態應用(如session粘性)

? 需要會話保持的系統

? 本地緩存依賴性強的應用

實戰對比測試

我在測試環境搭建了相同配置的3臺服務器,進行了為期一周的壓力測試對比:

測試環境配置

# 服務器配置
CPU: 4核
內存: 8GB
網絡: 1Gbps

# 測試工具
wrk -t12 -c400 -d30s --latency http://test.domain.com/api/test

測試結果對比

指標 加權輪詢 IP哈希
平均響應時間 156ms 189ms
吞吐量(RPS) 8,432 7,156
99%延遲 445ms 567ms
服務器負載均衡度
Session一致性

生產環境最佳實踐

方案一:混合策略(推薦)

# 靜態資源使用加權輪詢
upstreamstatic_backend {
 server192.168.1.10:8080weight=3;
 server192.168.1.11:8080weight=2;
}

# 用戶相關接口使用IP哈希
upstreamuser_backend {
  ip_hash;
 server192.168.1.20:8080;
 server192.168.1.21:8080;
}

server{
 listen80;
 server_nameexample.com;
 
 # 靜態資源
 location~* .(css|js|png|jpg|jpeg|gif|ico)${
   proxy_passhttp://static_backend;
   expires1y;
   add_headerCache-Control"public, immutable";
  }
 
 # 用戶相關API
 location/api/user/ {
   proxy_passhttp://user_backend;
   proxy_set_headerHost$host;
  }
 
 # 其他API
 location/api/ {
   proxy_passhttp://static_backend;
   proxy_set_headerHost$host;
  }
}

方案二:動態權重調整

# 監控腳本:根據服務器負載動態調整權重
#!/bin/bash

whiletrue;do
 forserverinserver1 server2 server3;do
    cpu_usage=$(ssh$server"top -bn1 | grep 'Cpu(s)' | awk '{print$2}' | cut -d'%' -f1")
   
   if[$cpu_usage-lt 30 ];then
      weight=3
   elif[$cpu_usage-lt 70 ];then
      weight=2
   else
      weight=1
   fi
   
   # 動態更新Nginx配置
    nginx -s reload
 done
 sleep30
done

常見踩坑指南

踩坑1:盲目使用IP哈希導致負載不均

錯誤配置

upstreambackend {
  ip_hash; # 在CDN后使用IP哈希
 serverweb1:8080;
 serverweb2:8080;
}

問題:CDN會導致大量請求來自相同IP,造成負載極不均衡

正確做法

upstreambackend {
 hash$http_x_forwarded_forconsistent; # 使用真實客戶端IP
 serverweb1:8080;
 serverweb2:8080;
}

踩坑2:權重設置不合理

血淚教訓:新服務器性能是老服務器3倍,但權重只設置了2倍,結果新服務器閑置,老服務器累死。

正確配置

upstreambackend {
 serverold_server:8080weight=1;
 servernew_server:8080weight=4; # 根據實際性能差異設置
}

性能調優技巧

1. 啟用長連接

upstreambackend {
 server192.168.1.10:8080weight=3;
 keepalive32; # 保持32個長連接
}

server{
 location/ {
   proxy_passhttp://backend;
   proxy_http_version1.1;
   proxy_set_headerConnection"";
  }
}

2. 健康檢查配置

upstreambackend {
 server192.168.1.10:8080weight=3max_fails=2fail_timeout=10s;
 server192.168.1.11:8080weight=2max_fails=2fail_timeout=10s;
}

3. 監控腳本

# nginx_status.sh - 實時監控后端服務器狀態
#!/bin/bash

echo"=== Nginx Upstream Status ==="
curl -s http://localhost/nginx_status | grep -A 20"upstream"

echo"=== Backend Health Check ==="
forserverin192.168.1.10 192.168.1.11;do
  response=$(curl -o /dev/null -s -w"%{http_code}
"http://$server:8080/health)
 if[$response-eq 200 ];then
   echo"$server- OK"
 else
   echo"$server- Failed ($response)"
 fi
done

總結與建議

經過多年生產環境實戰,我的建議是:

1.無狀態應用優先選擇加權輪詢,性能更好,擴展性強

2.有狀態應用謹慎使用IP哈希,考慮Redis等外部Session存儲

3.混合策略是王道,不同業務場景使用不同策略

4.持續監控是關鍵,定期分析訪問日志和性能指標

寫在最后

作為運維工程師,我們的價值不僅僅是讓系統跑起來,更要讓它跑得更好、更穩定。每一次配置優化、每一個細節調整,都可能在關鍵時刻拯救整個系統。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    14

    文章

    10251

    瀏覽量

    91478
  • 負載均衡
    +關注

    關注

    0

    文章

    133

    瀏覽量

    12874
  • nginx
    +關注

    關注

    0

    文章

    186

    瀏覽量

    13110

原文標題:生產環境踩坑實錄:Nginx負載均衡策略選擇指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用nginx實現tomcat負載均衡

    Nginx+tomcat+memcached實現負載均衡及session(交叉存儲)
    發表于 08-28 08:52

    nginx實現的負載均衡

    nginx實現負載均衡
    發表于 05-04 13:42

    16nginx+keepalived +zuul如何實現高可用及負載均衡

    學習筆記微服務-16 nginx+keepalived +zuul 實現高可用及負載均衡
    發表于 05-22 10:16

    基于應用層負載均衡策略的分析

    基于應用層負載均衡策略的分析
    發表于 03-26 08:28 ?8次下載

    HBase負載均衡分析及優化策略

    HBase負載均衡分析及優化策略_黃偉建
    發表于 01-03 17:41 ?0次下載

    Nginx和Tomcat負載均衡實現session共享

    Nginx和Tomcat負載均衡實現session共享
    發表于 09-05 10:40 ?9次下載
    <b class='flag-5'>Nginx</b>和Tomcat<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>實現session共享

    構建實戰:Nginx+IIS構筑Web服務器集群負載均衡

    構建實戰:Nginx+IIS構筑Web服務器集群負載均衡
    發表于 09-05 10:56 ?4次下載
    構建實戰:<b class='flag-5'>Nginx</b>+IIS構筑Web服務器集群<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    f5負載均衡Nginx負載均衡有什么區別

    負載均衡是分攤到多個操作單元上進行執行,建立在現有網絡結構之上,提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。市場上有很多的負載
    發表于 01-01 18:41 ?9753次閱讀
    f5<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>和<b class='flag-5'>Nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>有什么區別

    聊聊Nginx作為負載均衡器它支持的算法都有哪些?

    Nginx作為一款最流行WEB服務器軟件,同時也是一款反向代理和負載均衡軟件。毫不夸張地說,Nginx負載
    的頭像 發表于 02-14 17:50 ?1422次閱讀

    如何使用Nginx作為應用程序的負載均衡器?

    兩臺主機安裝并配置了Web服務器軟件,才能看到使用nginx進行負載平衡的優勢。如果我們已經設置了一個正在運行的Web主機,則通過創建自定義圖像復制它并將其部署到新的Web服務器上。下面是使用Nginx作為應用程序的
    的頭像 發表于 03-23 14:52 ?1939次閱讀

    搭建Keepalived+Lvs+Nginx高可用集群負載均衡

    ? 一、Nginx安裝 二、配置反向代理 三、配置負載均衡 四、upstream指令參數 五、配置ssl證書提供https訪問 六、配置ha nginx 七、LVS(Linux Vir
    的頭像 發表于 06-25 15:39 ?4274次閱讀
    搭建Keepalived+Lvs+<b class='flag-5'>Nginx</b>高可用集群<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    負載均衡策略有哪些? 負載均衡的三種方式?

    負載均衡策略有哪些? 負載均衡策略有如下: 輪詢(Round Robin):按照請求的順序輪
    的頭像 發表于 07-25 14:13 ?3438次閱讀

    nginx負載均衡配置介紹

    目錄 nginx負載均衡 nginx負載均衡介紹 反向代理與
    的頭像 發表于 11-10 13:39 ?1552次閱讀
    <b class='flag-5'>nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>配置介紹

    一文詳解Nginx負載均衡

    Nginx作為負載均衡器,通過將請求分發到多個后端服務器,以提高性能、可靠性和擴展性。支持多種負載均衡算法,如輪詢、最小連接數、IP哈希等,
    的頭像 發表于 06-25 14:51 ?1080次閱讀
    一文詳解<b class='flag-5'>Nginx</b><b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

    Nginx反向代理和負載均衡配置實戰

    負載均衡則是反向代理的進階玩法。當一臺后端服務器扛不住流量的時候,就需要多臺服務器一起分擔壓力。Nginx負責把請求分發到不同的服務器上,這就是負載
    的頭像 發表于 01-23 13:44 ?641次閱讀