nginx 負(fù)載均衡

常見負(fù)載均衡方法:

手動(dòng)選擇

下載站點(diǎn),提供不同線路,不同服務(wù)器連接

例如:
下載某附件地址自主選擇:
xx網(wǎng)絡(luò) xx互聯(lián) xx下載 xx電信 xx聯(lián)通 xx網(wǎng)盤 ...

DNS輪詢

對主機(jī)添加多條A記錄

缺點(diǎn):

  • 可靠性低,網(wǎng)絡(luò)運(yùn)營商DNS存在緩存,不能即時(shí)生效
  • 負(fù)載分配不均衡,本地DNS有緩存

硬件負(fù)載均衡

硬件交換機(jī):F5,Cisco Css等,價(jià)格較高

軟件負(fù)載均衡

四層:LVS

七層:Nginx,HAProxy等

支持虛擬主機(jī),可配置性好,提供多種負(fù)載策略和健康檢查

查看QQ郵箱DNS示例:

[root@bogon ~]# dig  mail.qq.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> mail.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49183
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mail.qq.com.           IN  A

;; ANSWER SECTION:
mail.qq.com.        476 IN  A   183.61.51.74
mail.qq.com.        476 IN  A   14.17.42.24
mail.qq.com.        476 IN  A   14.18.245.237
mail.qq.com.        476 IN  A   183.61.38.175

;; Query time: 5 msec
;; SERVER: 219.141.136.10#53(219.141.136.10)
;; WHEN: Fri Jun 30 23:41:43 2017
;; MSG SIZE  rcvd: 93

負(fù)載均衡算法

輪詢(默認(rèn))

  • 每個(gè)請求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。

  • weight 指定輪詢的權(quán)值 weight值越大,分配的訪問的機(jī)率越高

  • 主要用于后端的每個(gè)服務(wù)器性能不均的情況下

  • 可靠性低和負(fù)載分配不均衡。

      server 192.168.1.22 weight = 7;
      server 192.168.1.23 weight = 3; 
    

ip_hash

  • 每個(gè)請求按訪問Ip的hash結(jié)果分配

  • 解決了動(dòng)態(tài)網(wǎng)頁存在的session共享問題

      upstream bbs {
          ip_hash;
          server 127.0.0.1:9001;
          server 127.0.0.1:9002;
      }
    

fair(第三方)

  • 根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來分配請求,響應(yīng)時(shí)間短的優(yōu)先分配。

  • Nginx本身不支持fair的,須下載Nginx的upstream_fair模塊

      upstream tomcats {
            server 127.0.0.1:9001;
            server 127.0.0.1:9002;
            fair;
      }
    

url_hash:

按訪問url的hash結(jié)果來分配請求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。

配置和IP哈希類似,只不過針對請求的url進(jìn)行hash(基于緩存的server,頁面靜態(tài)化)。

負(fù)載均衡調(diào)度中常用的狀態(tài):

down: 
表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡

backup: 
備份機(jī)器,其他所有非backup機(jī)器出現(xiàn)故障或忙碌時(shí),才請求backup主機(jī)

max_fails: 
允許請求失敗的次數(shù),默認(rèn)為1,當(dāng)超過最大的次數(shù)時(shí),返回proxy_next_upstream模塊定義的錯(cuò)誤

fail_timeout: 
在經(jīng)歷max_fails次失敗后,暫停服務(wù)的時(shí)間

當(dāng)負(fù)載調(diào)度算法為ip_hash時(shí),后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是weight和backup。

示例

upstream bbs{
    #ip_hash
    server bbs1.test.com weight=6;         
    server bbs2.test.com weight=4; 
    server bbs3.test.com backup; 
}

server {
    listen       80;
    server_name  bbs.test.com;
    
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
        proxy_pass   http://bbs/;    
    }
        
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容