Django + Nginx負載均衡(內置策略)

一育叁、概要

負載均衡的主要作用是為了避免單獨一個服務器壓力過大,將來自用戶的請求轉發(fā)給不同的服務器

負載均衡通過upstream模塊類配置,目前Nginx服務器upstream模塊支持7種載均衡策略

序號 均衡策略 說明
1 輪詢 默認方式
2 weight 權重方式
3 ip_hash 依據(jù)ip分配方式
4 least_conn 最少連接方式
5 fair(第三方) 響應時間方式
6 url_hash(第三方) 依據(jù)URL分配方式
7 sticky(第三方) 壓力均衡
image

二、輪詢

1抛蚤、說明

upstream模塊默認的負載均衡默認策略,每個請求按照時間順序逐一分配寻狂。如果server掛掉岁经,能自動剔除。

2蛇券、參數(shù)列表

參數(shù) 說明
backup 標記該服務器為備用服務器缀壤。當主服務器停止時,請求會被發(fā)送到它這里纠亚。
ail_timeout 與max_fails結合使用塘慕。
max_fails 設置在fail_timeout參數(shù)設置的時間內最大失敗次數(shù),如果在這個時間內蒂胞,所有針對該服務器的請求都失敗了图呢,那么認為該服務器會被認為是停機了,
fail_time 服務器會被認為停機的時間長度,默認為10s骗随。
down 標記某臺應用服務器暫時不參與負載均衡

3蛤织、特點

  • 此策略適合服務器配置相當,無狀態(tài)且短平快的服務使用鸿染。

4指蚜、示例代碼

  1. gunicorn配置
    本案例采用的偽集群方式,主要修改配置文件的bind的端口涨椒,實戰(zhàn)開發(fā)中可以將項目部署在不同的服務器上摊鸡,


    image
  2. nginx中upstream配置
    # 動態(tài)服務器組
    upstream http-default {
        server localhost:8000;  
        server localhost:8001;
        server localhost:8002; 
        # 備用服務器
        server localhost:8003 backup; 
    }
    
  3. 在server模塊中
       # 其它配置都不需要變 只需要修改 proxy_pass的值
    server {
        location / {
            # 設置成upstream模塊的名字即可
            proxy_pass http://https-default;
        }
    

三、權重方式(weight)

1丢烘、說明

權重方式柱宦,在輪詢策略的基礎上指定輪詢的幾率

2、參數(shù)列表

參數(shù) 說明
weight weight參數(shù)用于指定輪詢幾率播瞳,weight的默認值為1
backup 標記該服務器為備用服務器掸刊。當主服務器停止時,請求會被發(fā)送到它這里赢乓。
ail_timeout 與max_fails結合使用忧侧。
max_fails 設置在fail_timeout參數(shù)設置的時間內最大失敗次數(shù),如果在這個時間內牌芋,所有針對該服務器的請求都失敗了蚓炬,那么認為該服務器會被認為是停機了,
fail_time 服務器會被認為停機的時間長度,默認為10s躺屁。
down 標記某臺應用服務器暫時不參與負載均衡

3肯夏、特點

  • 權重越高分配到需要處理的請求越多。
  • 此策略可以與least_conn和ip_hash結合使用。
  • 此策略比較適合服務器的硬件配置差別比較大的情況驯击。

4烁兰、示例代碼

  1. nginx
    # 負載均衡
    upstream http-weight {
        server localhost:8000  weight=2;  
        server localhost:8001  weight=2; 
        server localhost:8002  backup; 
        server localhost:8003  max_fails=3 fail_timeout=15s; 
    }
    
  2. 在server模塊中
    # 其它配置都不需要變 只需要修改 proxy_pass
    server {
        location / {
            # 設置成upstream模塊的名字即可
            proxy_pass http://https-weight;
        }
    

四、ip_hash

1徊都、說明

指定負載均衡器按照基于客戶端IP的分配方式沪斟,這個方法確保了相同的客戶端的請求一直發(fā)送到相同的服務器,以保證session會話暇矫。這樣每個訪客都固定訪問一個后端服務器主之,session共享

2、參數(shù)列表

參數(shù) 說明
ip_hash 使用ip_hash策略
weight weight參數(shù)用于指定輪詢幾率李根,weight的默認值為1
backup 標記該服務器為備用服務器槽奕。當主服務器停止時,請求會被發(fā)送到它這里朱巨。
ail_timeout 與max_fails結合使用史翘。
max_fails 設置在fail_timeout參數(shù)設置的時間內最大失敗次數(shù)枉长,如果在這個時間內冀续,所有針對該服務器的請求都失敗了,那么認為該服務器會被認為是停機了必峰,
fail_time 服務器會被認為停機的時間長度,默認為10s洪唐。
down 標記某臺應用服務器暫時不參與負載均衡

3、特點

  • 在nginx版本必須大于1.3.1吼蚁。
  • 此策略適合開發(fā)中常用于解決session共享的問題
  • ip_hash不能與backup同時使用凭需。
  • 當有服務器需要剔除,必須手動down掉肝匆。

4粒蜈、示例代碼

  1. upstream配置
    upstream http-ip-hash {
        ip_hash;    #保證每個訪客固定訪問一個后端服務器
        server localhost:8080 weight=2; 
        server localhost:8081 weight=2;  
        server localhost:8082 weight=3;  
        server localhost:8083 max_fails=3 fail_timeout=20s;
    }
    
  2. server模塊
    # 其它配置都不需要變 只需要修改 proxy_pass
    server {
        location / {
            # 設置成upstream模塊的名字即可
            proxy_pass http://http-ip-hash;
        }
    

五、least_conn

1旗国、說明

最少連接可以控制單獨的一臺服務器負載太高的問題枯怖,而是會根據(jù)其負載動態(tài)的分配請求。輪詢算法是把請求平均的轉發(fā)給各個后端能曾,使它們的負載大致相同度硝;但是,有些請求占用的時間很長寿冕,會導致其所在的后端負載較高蕊程。這種情況下,least_conn這種方式就可以達到更好的負載均衡效果驼唱。

當然如果每臺服務還配置了權重藻茂,那么這時會取連接數(shù)和權重比值最小的那臺服務,如果連接數(shù)和權重的比值都相同的話就會采取輪詢的方式進行分發(fā)

3、參數(shù)列表

參數(shù) 說明
least_conn 最少連接策略
weight weight參數(shù)用于指定輪詢幾率辨赐,weight的默認值為1
backup 標記該服務器為備用服務器岗钩。當主服務器停止時,請求會被發(fā)送到它這里肖油。
ail_timeout 與max_fails結合使用兼吓。
max_fails 設置在fail_timeout參數(shù)設置的時間內最大失敗次數(shù),如果在這個時間內森枪,所有針對該服務器的請求都失敗了视搏,那么認為該服務器會被認為是停機了,
fail_time 服務器會被認為停機的時間長度,默認為10s县袱。
down 標記某臺應用服務器暫時不參與負載均衡

4浑娜、示例代碼

  1. upstream配置
    upstream http-least-conn {
        least_conn;    #保證每個訪客固定訪問一個后端服務器
        server localhost:8080 weight=2; 
        server localhost:8081 weight=2;  
        server localhost:8082 weight=3;  
        server localhost:8083 max_fails=3 fail_timeout=20s;
    }
    
  2. server模塊
    # 其它配置都不需要變 只需要修改 proxy_pass
    server {
        location / {
            # 設置成upstream模塊的名字即可
            proxy_pass http-least-conn;
        }
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市式散,隨后出現(xiàn)的幾起案子筋遭,更是在濱河造成了極大的恐慌,老刑警劉巖暴拄,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漓滔,死亡現(xiàn)場離奇詭異,居然都是意外死亡乖篷,警方通過查閱死者的電腦和手機响驴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撕蔼,“玉大人豁鲤,你說我怎么就攤上這事【ň冢” “怎么了琳骡?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讼溺。 經(jīng)常有香客問我楣号,道長,這世上最難降的妖魔是什么肾胯? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任竖席,我火速辦了婚禮,結果婚禮上敬肚,老公的妹妹穿的比我還像新娘毕荐。我一直安慰自己,他們只是感情好艳馒,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布憎亚。 她就那樣靜靜地躺著员寇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪第美。 梳的紋絲不亂的頭發(fā)上蝶锋,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音什往,去河邊找鬼扳缕。 笑死,一個胖子當著我的面吹牛别威,可吹牛的內容都是我干的躯舔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼省古,長吁一口氣:“原來是場噩夢啊……” “哼粥庄!你這毒婦竟也來了?” 一聲冷哼從身側響起豺妓,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤惜互,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琳拭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體训堆,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年臀栈,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔫慧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡权薯,死狀恐怖,靈堂內的尸體忽然破棺而出睡扬,到底是詐尸還是另有隱情盟蚣,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布卖怜,位于F島的核電站屎开,受9級特大地震影響,放射性物質發(fā)生泄漏马靠。R本人自食惡果不足惜奄抽,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甩鳄。 院中可真熱鬧逞度,春花似錦、人聲如沸妙啃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至馆匿,卻和暖如春抑胎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渐北。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工阿逃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赃蛛。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓盆昙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焊虏。 傳聞我的和親對象是個殘疾皇子淡喜,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354