在nginx中的負(fù)載均衡主要有兩種:四層負(fù)載(IP:Port)、七層負(fù)載(http://xxx)
nginx upstream模塊
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}
server {
location / {
proxy_pass http://backend;
}
}
1. 屬性解釋
- upstream: 主要是定義一個(gè)后端服務(wù)地址的集合列表,每個(gè)后端服務(wù)使用一個(gè)server命令表示
- upstream {} 和 Server {} 兩部分內(nèi)容屬于平級(jí)關(guān)系
2. 后端常用狀態(tài)
在upstream模塊中,可以使用server命令指定后端服務(wù)器的地址,同時(shí)還可以設(shè)置后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài),常用的狀態(tài)有以下幾種:
- down: 邏輯宕機(jī),表示當(dāng)前server主機(jī)暫時(shí)不參與負(fù)載均衡
- backup:后備主機(jī),當(dāng)所有非backup機(jī)器出現(xiàn)故障或者繁忙的時(shí)候,才會(huì)請(qǐng)求backup機(jī)器
- max_fails:允許請(qǐng)求的最大失敗數(shù),默認(rèn)為1,配合fail_timeout一起使用
- fail_timeout:經(jīng)歷max_fails次失敗后,暫停服務(wù)的時(shí)間,默認(rèn)為10s
負(fù)載均衡調(diào)度算法:
1. 內(nèi)置策略
- 雨露均沾型:輪訓(xùn)、加權(quán)輪訓(xùn)、哈希
- 定向服務(wù)型:ip_hash、least_conn、cookie、route、lean、
- 商業(yè)類型:ntlm、least_time、queue、stick
2. 擴(kuò)展策略
- 擴(kuò)展策略:各種結(jié)合業(yè)務(wù)場(chǎng)景自定義的算法或者第三方算法
- 第三方算法:fair、url_hash
常用算法簡介
- 輪詢(默認(rèn)):請(qǐng)求按順序逐一分配到不同的后端服務(wù)器
- weight:指定輪詢權(quán)重,值越大,分配到的幾率就越高,適用于后端服務(wù)器性能不均衡情況
- ip_hash:按訪問 IP 的哈希結(jié)果分配請(qǐng)求,分配后訪客訪問固定后端服務(wù)器,有效的解決動(dòng)態(tài)網(wǎng)頁會(huì)話共享問題
- fair:基于后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配
- url_hash:按訪問 URL 的哈希結(jié)果分配請(qǐng)求,使同 URL 定向到同一臺(tái)后端服務(wù)器,可提高后端緩存服務(wù)器的效率