一神凑、.背景介紹
nginx 這個輕量級、高性能的 web server 主要可以干兩件事情:
一是直接作為http server;另外一個功能就是作為反向代理服務(wù)器實現(xiàn)負載均
二、.知識剖析
nginx的負載均衡的幾種策略:
1.輪詢(默認);
每個請求按時間順序逐一分配到不同的后端服務(wù)器脏里,如果后端服務(wù)器down掉,能自動剔除难捌。
upstream backserver {
server IP1;
server IP2;
}
2.指定權(quán)重:weight;
指定輪詢幾率鸦难,weight和訪問比率成正比根吁,用于后端服務(wù)器性能不均的情況。
upstream backserver {
server IP1 weight=10;
server IP2 weight=10;
}
3.ip_hash合蔽;
每個請求按訪問ip的hash結(jié)果分配击敌,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題拴事。
upstream backserver {
ip_hash;
server IP1:88;
server IP2:80;
}
4.fair(第三方)沃斤;
按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配刃宵。
upstream backserver {
server server1;
server server2;
fair;
}
5.url_hash(第三方)
按訪問url的hash結(jié)果來分配請求衡瓶,使每個url定向到同一個后端服務(wù)器,后端服務(wù)器為緩存時比較有效牲证。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
三哮针、常見問題
1.為什么要用nginx負載均衡?
2.nginx的優(yōu)缺點?
四十厢、解決方案
1.為什么要用nginx負載均衡等太?
簡單來說就是為了在服務(wù)器端宕機后,不會導致整個服務(wù)不能使用蛮放,負載均衡需要在兩臺以上的服務(wù)器上才能實現(xiàn)
2.nginx的優(yōu)缺點缩抡?
優(yōu)點:(1)Nginx對網(wǎng)絡(luò)穩(wěn)定性的依賴非常小,理論上能ping通就就能進行負載功能
(2)Nginx安裝和配置比較簡單包颁,測試起來比較方便瞻想,它基本能把錯誤用日志打印出來
(3)可以承擔高負載壓力且穩(wěn)定,在硬件不差的情況下一般能支撐幾萬次的并發(fā)量
(4)Nginx也可作為靜態(tài)網(wǎng)頁和圖片服務(wù)器徘六,這方面的性能也無對手内边。
缺點:(1)Nginx僅能支持http、https和Email協(xié)議待锈,這樣就在適用范圍上面小些
(2)對后端服務(wù)器的健康檢查漠其,只支持通過端口來檢測,不支持通過url來檢測
五竿音、編碼實戰(zhàn)
六和屎、擴展思考
Session問題:
當我們確定一系列負載的服務(wù)器后,那我們的WEB站點會分布到這些服務(wù)器上春瞬。
這個時候如果采用Test2 每一次請求隨機訪問任何一臺服務(wù)器上柴信,這樣導致你訪問A服務(wù)器后,
下一次請求又突然轉(zhuǎn)到B服務(wù)器上宽气。這個時候與A服務(wù)器建立的Session随常,傳到B站點服務(wù)器肯定是無法正常響應(yīng)的。
總結(jié):通過nginx ip_hash負載保持對同一服務(wù)的會話萄涯,這中看起來最方便绪氛,最輕量。但是數(shù)據(jù)量增大會導致ip
七涝影、參考文獻
八枣察、更多討論