nginx支持的負(fù)載均衡調(diào)度算法
1.round robin(默認(rèn)) ? (推薦學(xué)習(xí):nginx教程)
輪詢方式,依次將請(qǐng)求分配到各個(gè)后臺(tái)服務(wù)器中,默認(rèn)的負(fù)載均衡方式。?
適用于后臺(tái)機(jī)器性能一致的情況。?
掛掉的機(jī)器可以自動(dòng)從服務(wù)列表中剔除。
2.weight
根據(jù)權(quán)重來(lái)分發(fā)請(qǐng)求到不同的機(jī)器中,指定輪詢幾率,weight和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。??
例如:??
upstream?bakend?{???? server?192.168.0.14?weight=10;???? server?192.168.0.15?weight=10;???? }
3. IP_hash
根據(jù)請(qǐng)求者ip的hash值將請(qǐng)求發(fā)送到后臺(tái)服務(wù)器中,可以保證來(lái)自同一ip的請(qǐng)求被打到固定的機(jī)器上,可以解決session問(wèn)題。
例如:
upstream?bakend?{???? ip_hash;???? server?192.168.0.14:88;???? server?192.168.0.15:80;???? }
4.url_hash(第三方)
根據(jù)請(qǐng)求的url的hash值將請(qǐng)求分到不同的機(jī)器中,當(dāng)后臺(tái)服務(wù)器為緩存的時(shí)候效率高。
例如:
在upstream中加入hash語(yǔ)句,server語(yǔ)句中不能寫(xiě)入weight等其他的參數(shù),hash_method是使用的hash算法??
upstream?backend?{???? server?squid1:3128;???? server?squid2:3128;???? hash?$request_uri;???? hash_method?crc32;???? }
tips:??
upstream bakend{#定義負(fù)載均衡設(shè)備的Ip及設(shè)備狀態(tài)? ??
ip_hash;???? server?127.0.0.1:9090?down;???? server?127.0.0.1:8080?weight=2;???? server?127.0.0.1:6060;???? server?127.0.0.1:7070?backup;? }
在需要使用負(fù)載均衡的server中增加??
proxy_pass?http://bakend/;
每個(gè)設(shè)備的狀態(tài)設(shè)置為:?
1.down 表示單前的server暫時(shí)不參與負(fù)載??
2.weight 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大。??
3.max_fails :允許請(qǐng)求失敗的次數(shù)默認(rèn)為1.當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤??
4.fail_timeout:max_fails次失敗后,暫停的時(shí)間。??
5.backup: 其它所有的非backup機(jī)器down或者忙的時(shí)候,請(qǐng)求backup機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕。??
nginx支持同時(shí)設(shè)置多組的負(fù)載均衡,用來(lái)給不用的server來(lái)使用。??
client_body_in_file_only 設(shè)置為On 可以講client post過(guò)來(lái)的數(shù)據(jù)記錄到文件中用來(lái)做debug??
client_body_temp_path 設(shè)置記錄文件的目錄 可以設(shè)置最多3層目錄??
location 對(duì)URL進(jìn)行匹配.可以進(jìn)行重定向或者進(jìn)行新的代理 負(fù)載均衡
5. fair(第三方)
根據(jù)后臺(tái)響應(yīng)時(shí)間來(lái)分發(fā)請(qǐng)求,響應(yīng)時(shí)間短的分發(fā)的請(qǐng)求多。
例如:
upstream?backend?{???? server?server1;???? server?server2;???? fair;???? }