Web服務(wù)器--Nginx配置負(fù)載均衡(四)

一牧牢、負(fù)載均衡

??負(fù)載均衡是高可用網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的的一個(gè)關(guān)鍵組成部分艾帐,有了負(fù)載均衡丑蛤,我們通常可以將我們的應(yīng)用服務(wù)器部署多臺(tái)麻车,然后通過(guò)負(fù)載均衡將用戶的請(qǐng)求分發(fā)到不同的服務(wù)器用來(lái)提高網(wǎng)站缀皱、應(yīng)用、數(shù)據(jù)庫(kù)或其他服務(wù)的性能以及可靠性动猬。
??首先啤斗,用戶是通過(guò)網(wǎng)絡(luò)直接和web服務(wù)器相連,想象一下枣察,如果這個(gè)服務(wù)器掛了(這種情況隨時(shí)都可能發(fā)生的)争占,那么用戶的請(qǐng)求就會(huì)得不到響應(yīng),將無(wú)法訪問(wèn)該網(wǎng)站序目,這就是著名的單點(diǎn)故障問(wèn)題臂痕,這肯定是不行的,一般而言猿涨,商業(yè)上的網(wǎng)站其可靠性需要達(dá)到至少4個(gè)9握童,也就是99.99&以上。
??其次叛赚,即使服務(wù)器是正常工作的情況澡绩,但是如果很多用戶在同一時(shí)間內(nèi)訪問(wèn)服務(wù)器,超過(guò)了服務(wù)器的處理能力俺附,那么會(huì)出現(xiàn)響應(yīng)速度慢甚至無(wú)法連接的情況肥卡,這也是用戶無(wú)法接受的。
??負(fù)載均衡的出現(xiàn)可以很好的解決上面兩個(gè)問(wèn)題事镣,通過(guò)引入一個(gè)負(fù)載均衡器和至少兩個(gè)web 服務(wù)器步鉴,可以有效的解決上面兩個(gè)問(wèn)題。注:通常情況下璃哟,所有的后端服務(wù)器會(huì)保證提供相同的內(nèi)容氛琢,以便用戶無(wú)論哪個(gè)服務(wù)器響應(yīng),都能收到一致的內(nèi)容随闪。
按照網(wǎng)絡(luò)模型OSI
四層(傳輸層)負(fù)載均衡:對(duì)客戶端TCP/IP協(xié)議的包轉(zhuǎn)發(fā)
七層(應(yīng)用層)負(fù)載均衡:Http的應(yīng)用層負(fù)載均衡,Nginx就是一個(gè)典型的7層負(fù)載均衡SLB阳似。

負(fù)載均衡

負(fù)載均衡常用算法:

  1. 輪詢:為第一個(gè)請(qǐng)求選擇健康池中的第一個(gè)后端服務(wù)器,然后按順序往后依次選擇铐伴,直到最后一個(gè)撮奏,然后循環(huán)俏讹。
  1. 最小連接:優(yōu)先選擇連接數(shù)最少,也就是壓力最小的后端服務(wù)器挽荡,在會(huì)話較長(zhǎng)的情況下可以考慮采取這種方式藐石。
  2. 散列:根據(jù)請(qǐng)求源的 IP 的散列(hash)來(lái)選擇要轉(zhuǎn)發(fā)的服務(wù)器。這種方式可以一定程度上保證特定用戶能連接到相同的服務(wù)器定拟。如果你的應(yīng)用需要處理狀態(tài)而要求用戶能連接到和之前相同的服務(wù)器,可以考慮采取這種方式逗嫡。

二青自、負(fù)載均衡

  1. 配置
   upstream mysvr {
      server 192.168.1.9:8888;
      server 192.168.1.9:9999;
    }
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;

        #代理地址 及映射的服務(wù)端的地址
        # 最重要的配置
        location /api {
               proxy_pass http://mysvr;  #服務(wù)器名稱
        }
   }
  1. 后端代碼
    9999服務(wù)器:
@RestController
@RequestMapping("/api/user")
@Slf4j
public class UserController {
    @GetMapping
    public String getServer(){
            return "9999服務(wù)器";
    }
}

8888服務(wù)器:

@RestController
@RequestMapping("/api/user")
@Slf4j
public class UserController {
    @GetMapping
    public String getServer(){
            return "8888服務(wù)器";
    }
}
  1. 訪問(wèn)測(cè)試
    重啟Nginx:
[root@localhost nginx]# ./sbin/nginx -s reload

刷新:


訪問(wèn)結(jié)果

訪問(wèn)結(jié)果

三、配置詳解

  1. upstream配置
    這個(gè)配置是寫一組被代理的服務(wù)器地址驱证,然后配置負(fù)載均衡的算法延窜。這里的被代理服務(wù)器地址有2種寫法。
    第一種:
upstream mysvr { 
      server 192.168.1.9:8888
      server 192.168.1.9:9999;
    }
 server {
        ....
        location  ~*^.+$ {         
           proxy_pass  http://mysvr;  #請(qǐng)求轉(zhuǎn)向mysvr 定義的服務(wù)器列表         
        } 

第二種:

upstream mysvr { 
      server  http://192.168.1.9:8888;
      server  http://192.168.1.9:9999;
    }
 server {
        ....
        location  ~*^.+$ {         
           proxy_pass  mysvr;  #請(qǐng)求轉(zhuǎn)向mysvr 定義的服務(wù)器列表         
        } 
  1. 熱備
    如果你有2臺(tái)服務(wù)器抹锄,當(dāng)一臺(tái)服務(wù)器發(fā)生事故時(shí)逆瑞,才啟用第二臺(tái)服務(wù)器給提供服務(wù)。服務(wù)器處理請(qǐng)求的順序:AAAAAA突然A掛啦伙单,BBBBBBBBBBBBBB.....
upstream mysvr { 
      server 192.168.1.9:8888; 
      server 192.168.1.9:9999 backup;  #熱備     
    }
  1. 輪詢
    nginx默認(rèn)就是輪詢其權(quán)重都默認(rèn)為1获高,服務(wù)器處理請(qǐng)求的順序:ABABABABAB....
upstream mysvr { 
      server 192.168.1.9:8888; 
      server 192.168.1.9:9999;       
    }
  1. 加權(quán)輪詢
    跟據(jù)配置的權(quán)重的大小而分發(fā)給不同服務(wù)器不同數(shù)量的請(qǐng)求。如果不設(shè)置吻育,則默認(rèn)為1念秧。下面服務(wù)器的請(qǐng)求順序?yàn)椋篈BBABBABBABBABB....
 upstream mysvr { 
      server 192.168.1.9:8888 weight=1;
      server 192.168.1.9:9999 weight=2;
}
  1. ip_hash
    nginx會(huì)讓相同的客戶端ip請(qǐng)求相同的服務(wù)器。
upstream mysvr { 
      server 192.168.1.9:8888; 
      server 192.168.1.9:9999;
      ip_hash;
    }
  1. nginx負(fù)載均衡配置狀態(tài)參數(shù)

down布疼,表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡摊趾。
backup,預(yù)留的備份機(jī)器游两。當(dāng)其他所有的非backup機(jī)器出現(xiàn)故障或者忙的時(shí)候砾层,才會(huì)請(qǐng)求backup機(jī)器,因此這臺(tái)機(jī)器的壓力最輕贱案。
max_fails肛炮,允許請(qǐng)求失敗的次數(shù),默認(rèn)為1轰坊。當(dāng)超過(guò)最大次數(shù)時(shí)铸董,返回proxy_next_upstream 模塊定義的錯(cuò)誤。
fail_timeout肴沫,在經(jīng)歷了max_fails次失敗后粟害,暫停服務(wù)的時(shí)間。max_fails可以和fail_timeout一起使用颤芬。

 upstream mysvr { 
      server 192.168.1.9:8888 weight=2 max_fails=2 fail_timeout=2;
      server 192.168.1.9:9999 weight=1 max_fails=2 fail_timeout=1;    
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悲幅,一起剝皮案震驚了整個(gè)濱河市套鹅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汰具,老刑警劉巖卓鹿,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異留荔,居然都是意外死亡吟孙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門聚蝶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杰妓,“玉大人,你說(shuō)我怎么就攤上這事碘勉∠锘樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵验靡,是天一觀的道長(zhǎng)倍宾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)胜嗓,這世上最難降的妖魔是什么高职? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮兼蕊,結(jié)果婚禮上初厚,老公的妹妹穿的比我還像新娘。我一直安慰自己孙技,他們只是感情好产禾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著牵啦,像睡著了一般亚情。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哈雏,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天楞件,我揣著相機(jī)與錄音,去河邊找鬼裳瘪。 笑死土浸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彭羹。 我是一名探鬼主播黄伊,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼派殷!你這毒婦竟也來(lái)了还最?” 一聲冷哼從身側(cè)響起墓阀,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拓轻,沒想到半個(gè)月后斯撮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扶叉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年勿锅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辜梳。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粱甫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出作瞄,到底是詐尸還是另有隱情,我是刑警寧澤危纫,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布宗挥,位于F島的核電站,受9級(jí)特大地震影響种蝶,放射性物質(zhì)發(fā)生泄漏契耿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一螃征、第九天 我趴在偏房一處隱蔽的房頂上張望搪桂。 院中可真熱鬧,春花似錦盯滚、人聲如沸踢械。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)内列。三九已至,卻和暖如春背率,著一層夾襖步出監(jiān)牢的瞬間话瞧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工寝姿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留交排,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓饵筑,卻偏偏與公主長(zhǎng)得像埃篓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翻翩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容