Nginx負(fù)載均衡策略


title: Nginx負(fù)載均衡策略
date: 2018-11-01 10:47:35
tags:

  • Nginx
  • 負(fù)載均衡
  • 學(xué)習(xí)筆記

Nginx負(fù)載均衡策略

概要

  • Nginx工作在OSI的第七層停做,可以這對http應(yīng)用做一些分流策略蒸殿;
  • Nginx反向代理服務(wù)的核心主要是轉(zhuǎn)發(fā)Http請求待笑,扮演了瀏覽器后端和后端服務(wù)器中轉(zhuǎn)的角色;
  • Nginx官方測試支持5萬并發(fā)連接僚饭,在實際生產(chǎn)環(huán)境中可以到2-3萬并發(fā)數(shù)連接,1萬個非活躍http keep-alive連接占用約2.5M內(nèi)存呀伙。3萬并發(fā)連接下寇壳,10個Nginx進(jìn)程,消耗內(nèi)存約150M朱躺;
  • 負(fù)載均衡的目的是為了解決單個節(jié)點壓力過大刁赖,導(dǎo)致Web服務(wù)響應(yīng)慢的問題;

內(nèi)置負(fù)載策略

策略

  • 輪循(round-robin)默認(rèn)策略

    • 根據(jù)請求次數(shù)室琢,將每個請求均勻分配到每臺服務(wù)器,如果后端服務(wù)器宕機乾闰,自動剔除。
  • 權(quán)重(Weight)

    • 把請求更多的分配到高配置的后端服務(wù)器上盈滴,默認(rèn)每個服務(wù)器的權(quán)重都是1。
  • ip_hash

    • 同一客戶端的Web請求被分發(fā)到同一個后端服務(wù)器進(jìn)行處理,使用該策略可以有效的避免用戶Session失效的問題巢钓。該策略可以連續(xù)產(chǎn)生1045個互異的value病苗,經(jīng)過20次hash仍然找不到可用的機器時,算法會退化成輪循症汹。
  • 最少連接(last_conn)

    • Web請求會被轉(zhuǎn)發(fā)到連接數(shù)最少的服務(wù)器上硫朦。

    參數(shù)說明

    • weight
      • 啟用權(quán)重策略,總數(shù)按照10進(jìn)行計算背镇,如果分配為3咬展,則表示所有連接中的30%分配給該服務(wù)器,默認(rèn)值為1;
    • max_fail/fail_time
      • 某臺服務(wù)器允許請求失敗的次數(shù)瞒斩,超過最大數(shù)后破婆,在fail_timeout時間內(nèi),新的請求不會分配給這臺機器胸囱,如果設(shè)置為0祷舀,反向代理服務(wù)器則會將這臺服務(wù)器設(shè)置為永久無效狀態(tài)。fail_time默認(rèn)為10秒烹笔;
    • backup
      • 將某臺服務(wù)器設(shè)定為備用機裳扯,當(dāng)列表中的其他服務(wù)器都不可用時,啟用備用機
    • down
      • 將某臺服務(wù)器設(shè)定為不可用狀態(tài)
    • max_conns
      • 限制分配給某臺服務(wù)器的最大連接數(shù)谤职,超過這個數(shù)量饰豺,反向代理服務(wù)器將不會分配新的連接,默認(rèn)為0允蜈,表示不限制哟忍;

    代碼

    http {
        upstream  server_group_name {
            # ip_hash; # 啟用ip_hash策略
            # last_conn; #啟用最少連接策略
            server ip or domain:port weight=2 max_fails=3 fail_timeout=15 max_conns=1000; # 使用weight設(shè)置權(quán)重為20%
            server ip or domain:port backup; # 設(shè)置為備用機,當(dāng)其他服務(wù)器全部宕機時陷寝,啟用備用服務(wù)器
            server ip or domain:port down; # 設(shè)置服務(wù)器為不可用狀態(tài)
        }
        server {
            listen 80;
            location / {
                proxy_pass http://server_group_name;
            }
        }
    }
    

擴(kuò)展策略

策略

  • 擴(kuò)展策略默認(rèn)不被編譯進(jìn)nginx內(nèi)核锅很,如果啟用該策略,需要自行編譯安裝

  • fair

    • 根據(jù)后臺服務(wù)器的響應(yīng)時間判斷負(fù)載情況凤跑,從中選出負(fù)載最輕的后端服務(wù)爆安。但是在實際請款中,網(wǎng)絡(luò)環(huán)境往往不那么簡單仔引,所以慎用扔仓。
    • 在編譯安裝后,如果需要啟用該策略咖耘,需要在upstream標(biāo)簽中添加fair;,啟用該策略后翘簇,加權(quán)輪循將失效。
  • url_hash

    • 按照請求url的hash結(jié)果來分配請求儿倒,試每個url定向到同一個后端服務(wù)器版保,在1.7.2之后的nginx版本中呜笑,該模塊應(yīng)集成到內(nèi)核中,不需要單獨安裝彻犁。
    • 啟用該策略叫胁,需要在upstream標(biāo)簽中添加hash $request_url;

問題

  • 使用Nginx的反向代理,讓同一個用戶的請求一定轉(zhuǎn)發(fā)到同一臺服務(wù)器上汞幢,這種均衡策略會消耗更多的服務(wù)器資源驼鹅,也增加了代理服務(wù)器的負(fù)擔(dān);
  • 使用其他策略作為負(fù)載均衡時森篷,會出現(xiàn)用戶Session丟失的情況输钩,為避免出現(xiàn)這種情況,可以將用戶的Session存放到緩存服務(wù)器中仲智,比較常用的方案時redis/memchache买乃;
  • 反向代理服務(wù)器也可以開啟緩存服務(wù),但是開啟該項服務(wù)會增加代理服務(wù)器的負(fù)擔(dān)坎藐,影響整體的負(fù)載均衡效率为牍;
  • 使用Nginx反向代理布置負(fù)載均衡,操作相對金丹岩馍,但是會有“單點故障”的問題碉咆,如果后臺某臺服務(wù)器宕機,會帶來很多的麻煩蛀恩,后期如果后臺服務(wù)器繼續(xù)增加疫铜,反向代理服務(wù)器會成為負(fù)載均衡方案的瓶頸。

參考

  1. https://juejin.im/post/5821c24e570c350060bef4c3
  2. http://www.reibang.com/p/ac8956f79206
  3. https://segmentfault.com/a/1190000014483200
  4. https://www.kancloud.cn/digest/understandingnginx/202607
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末双谆,一起剝皮案震驚了整個濱河市壳咕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌顽馋,老刑警劉巖谓厘,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寸谜,居然都是意外死亡竟稳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進(jìn)店門熊痴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來他爸,“玉大人,你說我怎么就攤上這事果善≌矬裕” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵巾陕,是天一觀的道長讨跟。 經(jīng)常有香客問我纪他,道長,這世上最難降的妖魔是什么许赃? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任止喷,我火速辦了婚禮馆类,結(jié)果婚禮上混聊,老公的妹妹穿的比我還像新娘。我一直安慰自己乾巧,他們只是感情好句喜,可當(dāng)我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沟于,像睡著了一般咳胃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旷太,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天展懈,我揣著相機與錄音,去河邊找鬼供璧。 笑死存崖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的睡毒。 我是一名探鬼主播来惧,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼演顾!你這毒婦竟也來了供搀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钠至,失蹤者是張志新(化名)和其女友劉穎葛虐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棉钧,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡屿脐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掰盘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摄悯。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖愧捕,靈堂內(nèi)的尸體忽然破棺而出奢驯,到底是詐尸還是另有隱情,我是刑警寧澤次绘,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布瘪阁,位于F島的核電站撒遣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏管跺。R本人自食惡果不足惜义黎,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豁跑。 院中可真熱鬧廉涕,春花似錦、人聲如沸艇拍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卸夕。三九已至层释,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間快集,已是汗流浹背贡羔。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留个初,地道東北人乖寒。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像勃黍,于是被迫代替她去往敵國和親宵统。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,435評論 2 348

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