nginx常用來配置成服務的閘道器並通過反向**實現負載均衡。這裡記錄一下有關負載均衡的策略以及相關引數的配置。
假設這是乙個基本的反向**配置
upstrean tomcats
server
}
輪訓
輪訓是nginx預設的一種策略,當不進行其他配置時就會執行這種策略。對於上面的基本配置,當訪問www.tomcats.com時就會一次訪問配置好的三颱tomcat.
權重權重則可以讓每台伺服器承擔它該承擔的壓力,也就是能力越大,責任越大,可以通過下面的方式進行配置。
upstrean tomcats
server
}
相當於把總請求分成1+3+5=9份,其中第一台處理1/9份,另外的伺服器同理。
ip_hash策略
ip_hash策略則是不同的ip分配到不同的伺服器,比如當前這個配置,ip雜湊值%(伺服器個數)=伺服器的索引。這種策略有個弊端,當有一台伺服器宕機後,就要重新計算索引伺服器,如果該伺服器存在和客戶端的會話就可能因客戶端被其他的伺服器處理而使會話失效。一致性hash能降低這一情況的影響。ip_hash配置如下:
upstrean tomcats
server
}
一致性hash策略
一致性hash主要是分為從0到232−
12^-1
232−
1個槽點,然後不同的使用者落到不同的區間,訪問相應的伺服器,如下圖
這樣相對於普通的ip_hash當有的server宕機後,不用全部重新計算hash,如圖中server1宕機,原來訪問server1的直接訪問server2,而只有server1原來的使用者受影響較大,其他區間的使用者並不受影響。
nginx對於負載均衡有一些引數可以對伺服器進行適當約束。
max_conns
max_conns可以用來限流,當某台伺服器達到max_conns設定的值時,伺服器只有處理完當前的連線才能處理新的連線。
upstrean tomcats
server
}
slow_start
slow_start可以設定乙個時間引數,對於有權重的配置,伺服器啟動時可以根據設定的時間從0不斷達到設定的權重。
注:該引數不能使用在 hash 和 random load balancing 中,當upstream 中只有一台 server,該引數無效。
upstrean tomcats
server
}
down
down主要用來標記該伺服器宕機出現問題了,比如一致性hash中可以用這種方式標記,而不可以暴力的直接把該機器的配置刪除。
backup
backup 表示當前伺服器節點是備用機,只有在其他的伺服器都宕機以後,自己才會加入到集群中,被使用者訪問到。
注:該引數不能使用在 hash 和 random load balancing 中。
max_fails、fail_timeout
max_fails :表示失敗幾次,則標記server已宕機
fail_timeout :表示失敗的重試時間。
假設
max_fails=2 fail_timeout=10s
代表10s秒內訪問該server失敗2次代表該server掛了,再過10s,這10s請求不會發到該server,10s後會再有新的請求分發到該server,如果還是失敗則重複以上。
keepalive
upstrean tomcats
server
}
nginx之負載均衡
負載均衡 load balancing 是一種計算機網路技術,用來在多個計算機 計算機集群 網路連線 cpu 磁碟驅動器或其他資源中分配負載,以達到最佳化資源使用 最大化吞吐率 最小化響應時間 同時避免過載的目的。使用帶有負載均衡的多個伺服器元件,取代單一的元件,可以通過冗餘提高可靠性。負載均衡服務...
Nginx之負載均衡
按照網路模型osi nginx負載均衡 配置語法 upstream backend server 機器測試nginx負載均衡 upstream的常見用法 後端伺服器在負載均衡排程中的狀態 1down 當前server暫時不參與負載均衡 1backup 預留的備份伺服器 當正在使用的後端服務異常時,啟...
nginx 之負載均衡
nginx 之負載均衡 以天天鮮配為例 upstream admin server 想要分享如下幾點 做了外網訪問限制 使用了proxy pass 反向 upstream 模組實現了負載均衡 proxy set header host host 請求包含 host 請求頭時為 host 欄位的值,在...