chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nginx負(fù)載均衡策略選擇指南

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

掃碼添加小助手

加入工程師交流群

生產(chǎn)環(huán)境踩坑實(shí)錄:Nginx負(fù)載均衡策略選擇指南

前言:作為一名摸爬滾打5年的運(yùn)維工程師,我在生產(chǎn)環(huán)境中見過太多因?yàn)樨?fù)載均衡策略選擇不當(dāng)導(dǎo)致的"血案"。今天就來聊聊Nginx最常用的兩種負(fù)載均衡策略的真實(shí)對(duì)比,絕對(duì)干貨!

真實(shí)場(chǎng)景:一次生產(chǎn)故障引發(fā)的思考

上個(gè)月,我們的電商系統(tǒng)在大促期間突然出現(xiàn)用戶購(gòu)物車數(shù)據(jù)丟失的問題。經(jīng)過排查發(fā)現(xiàn),罪魁禍?zhǔn)拙谷皇秦?fù)載均衡策略配置不當(dāng)!

故障現(xiàn)象

? 用戶添加商品到購(gòu)物車后,刷新頁面商品消失

? 用戶登錄狀態(tài)不穩(wěn)定,頻繁要求重新登錄

? 系統(tǒng)負(fù)載分布極不均勻,部分服務(wù)器CPU飆升至90%

這讓我深刻意識(shí)到,負(fù)載均衡策略的選擇絕不是隨意的!

核心知識(shí):兩大主流策略深度解析

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

工作原理:根據(jù)服務(wù)器權(quán)重,按比例分發(fā)請(qǐng)求

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;
  }
}

適用場(chǎng)景

? 服務(wù)器性能差異明顯

? 無狀態(tài)應(yīng)用(如API服務(wù))

? 需要靈活控制流量分配

2. IP哈希(IP Hash)

工作原理:根據(jù)客戶端IP的哈希值,將請(qǐng)求固定分發(fā)到特定服務(wù)器

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;
  }
}

適用場(chǎng)景

? 有狀態(tài)應(yīng)用(如session粘性)

? 需要會(huì)話保持的系統(tǒng)

? 本地緩存依賴性強(qiáng)的應(yīng)用

實(shí)戰(zhàn)對(duì)比測(cè)試

我在測(cè)試環(huán)境搭建了相同配置的3臺(tái)服務(wù)器,進(jìn)行了為期一周的壓力測(cè)試對(duì)比:

測(cè)試環(huán)境配置

# 服務(wù)器配置
CPU: 4核
內(nèi)存: 8GB
網(wǎng)絡(luò): 1Gbps

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

測(cè)試結(jié)果對(duì)比

指標(biāo) 加權(quán)輪詢 IP哈希
平均響應(yīng)時(shí)間 156ms 189ms
吞吐量(RPS) 8,432 7,156
99%延遲 445ms 567ms
服務(wù)器負(fù)載均衡度
Session一致性

生產(chǎn)環(huán)境最佳實(shí)踐

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

# 靜態(tài)資源使用加權(quán)輪詢
upstreamstatic_backend {
 server192.168.1.10:8080weight=3;
 server192.168.1.11:8080weight=2;
}

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

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

方案二:動(dòng)態(tài)權(quán)重調(diào)整

# 監(jiān)控腳本:根據(jù)服務(wù)器負(fù)載動(dòng)態(tài)調(diào)整權(quán)重
#!/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
   
   # 動(dòng)態(tài)更新Nginx配置
    nginx -s reload
 done
 sleep30
done

常見踩坑指南

踩坑1:盲目使用IP哈希導(dǎo)致負(fù)載不均

錯(cuò)誤配置

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

問題:CDN會(huì)導(dǎo)致大量請(qǐng)求來自相同IP,造成負(fù)載極不均衡

正確做法

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

踩坑2:權(quán)重設(shè)置不合理

血淚教訓(xùn):新服務(wù)器性能是老服務(wù)器3倍,但權(quán)重只設(shè)置了2倍,結(jié)果新服務(wù)器閑置,老服務(wù)器累死。

正確配置

upstreambackend {
 serverold_server:8080weight=1;
 servernew_server:8080weight=4; # 根據(jù)實(shí)際性能差異設(shè)置
}

性能調(diào)優(yōu)技巧

1. 啟用長(zhǎng)連接

upstreambackend {
 server192.168.1.10:8080weight=3;
 keepalive32; # 保持32個(gè)長(zhǎng)連接
}

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. 監(jiān)控腳本

# nginx_status.sh - 實(shí)時(shí)監(jiān)控后端服務(wù)器狀態(tài)
#!/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

總結(jié)與建議

經(jīng)過多年生產(chǎn)環(huán)境實(shí)戰(zhàn),我的建議是:

1.無狀態(tài)應(yīng)用優(yōu)先選擇加權(quán)輪詢,性能更好,擴(kuò)展性強(qiáng)

2.有狀態(tài)應(yīng)用謹(jǐn)慎使用IP哈希,考慮Redis等外部Session存儲(chǔ)

3.混合策略是王道,不同業(yè)務(wù)場(chǎng)景使用不同策略

4.持續(xù)監(jiān)控是關(guān)鍵,定期分析訪問日志和性能指標(biāo)

寫在最后

作為運(yùn)維工程師,我們的價(jià)值不僅僅是讓系統(tǒng)跑起來,更要讓它跑得更好、更穩(wěn)定。每一次配置優(yōu)化、每一個(gè)細(xì)節(jié)調(diào)整,都可能在關(guān)鍵時(shí)刻拯救整個(gè)系統(tǒng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9994

    瀏覽量

    90063
  • 負(fù)載均衡
    +關(guān)注

    關(guān)注

    0

    文章

    128

    瀏覽量

    12781
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    180

    瀏覽量

    12857

原文標(biāo)題:生產(chǎn)環(huán)境踩坑實(shí)錄:Nginx負(fù)載均衡策略選擇指南

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用nginx實(shí)現(xiàn)tomcat負(fù)載均衡

    Nginx+tomcat+memcached實(shí)現(xiàn)負(fù)載均衡及session(交叉存儲(chǔ))
    發(fā)表于 08-28 08:52

    nginx實(shí)現(xiàn)的負(fù)載均衡

    nginx實(shí)現(xiàn)負(fù)載均衡
    發(fā)表于 05-04 13:42

    16nginx+keepalived +zuul如何實(shí)現(xiàn)高可用及負(fù)載均衡

    學(xué)習(xí)筆記微服務(wù)-16 nginx+keepalived +zuul 實(shí)現(xiàn)高可用及負(fù)載均衡
    發(fā)表于 05-22 10:16

    基于應(yīng)用層負(fù)載均衡策略的分析

    基于應(yīng)用層負(fù)載均衡策略的分析
    發(fā)表于 03-26 08:28 ?8次下載

    HBase負(fù)載均衡分析及優(yōu)化策略

    HBase負(fù)載均衡分析及優(yōu)化策略_黃偉建
    發(fā)表于 01-03 17:41 ?0次下載

    Nginx和Tomcat負(fù)載均衡實(shí)現(xiàn)session共享

    Nginx和Tomcat負(fù)載均衡實(shí)現(xiàn)session共享
    發(fā)表于 09-05 10:40 ?9次下載
    <b class='flag-5'>Nginx</b>和Tomcat<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>實(shí)現(xiàn)session共享

    構(gòu)建實(shí)戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負(fù)載均衡

    構(gòu)建實(shí)戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負(fù)載均衡
    發(fā)表于 09-05 10:56 ?4次下載
    構(gòu)建實(shí)戰(zhàn):<b class='flag-5'>Nginx</b>+IIS構(gòu)筑Web服務(wù)器集群<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>

    面向軟件即服務(wù)的負(fù)載均衡策略建模與分析

    為提高軟件即服務(wù)( SaaS)應(yīng)用中資源的訪問效率,提出支持SaaS服務(wù)重要特征的負(fù)載均衡策略。首先,結(jié)合SaaS服務(wù)的多租戶和高度可伸縮兩大特性,提出一種基于租戶請(qǐng)求分流、在局部和全局兩個(gè)層次伸縮
    發(fā)表于 12-07 14:14 ?0次下載

    f5負(fù)載均衡Nginx負(fù)載均衡有什么區(qū)別

    負(fù)載均衡是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。市場(chǎng)上有很多的負(fù)載
    發(fā)表于 01-01 18:41 ?9562次閱讀
    f5<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>和<b class='flag-5'>Nginx</b><b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>有什么區(qū)別

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

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

    如何使用Nginx作為應(yīng)用程序的負(fù)載均衡器?

    兩臺(tái)主機(jī)安裝并配置了Web服務(wù)器軟件,才能看到使用nginx進(jìn)行負(fù)載平衡的優(yōu)勢(shì)。如果我們已經(jīng)設(shè)置了一個(gè)正在運(yùn)行的Web主機(jī),則通過創(chuàng)建自定義圖像復(fù)制它并將其部署到新的Web服務(wù)器上。下面是使用Nginx作為應(yīng)用程序的
    的頭像 發(fā)表于 03-23 14:52 ?1542次閱讀

    搭建Keepalived+Lvs+Nginx高可用集群負(fù)載均衡

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

    負(fù)載均衡策略有哪些? 負(fù)載均衡的三種方式?

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

    nginx負(fù)載均衡配置介紹

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

    一文詳解Nginx負(fù)載均衡

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