1,概覽
負載均衡,就是單個服務無法承受訪問壓力的時候,通過乙個入口把請求分發到不同的實際
處理業務的服務上。
後端業務中,可以用nginx實現上游伺服器負載均衡,把請求分發給不同的伺服器。也可以實
現下游資料庫負載
均衡,比如多台mysql負載均衡,多台redis負載均衡。
總之,負載均衡,就是通過相應的演算法把要處理的業務分給某個服務去處理。要點就是乙個入
口,多個服務。
nginx已經提供了負載均衡配置項,下面簡單總結下
2,實現
在 http 指令下配置 upstream
語法: upstream name
預設值: —
上下文: http
語法:
server address [parameters];
預設值: —
上下文: upstream
parameters詳解:
weight=num 配置權重
max_fails=number 定nginx與伺服器通訊的嘗試失敗的次數,預設為1
fail_timeout=time 統計失敗嘗試次數的時間段,結合max_fails使用,預設10s
backup 標記為備用伺服器,只有其他伺服器出故障,使用此伺服器
down 標記伺服器永久不可用
反向**:
proxy_pass url/upstreamname;
上下文:location
例如:server
}例如:
}}
3,nginx負載均衡機制
1,輪詢
預設輪詢方式,當接收到請求後,輪流分給內部伺服器
此種負載均衡演算法適合伺服器組內部的伺服器都具有相同的配置並且平均服務請求 相對均衡的情況
2,加權輪詢
需要配置weight引數,然後按照權重輪詢
此種負載均衡演算法適合給不同效能的服務配置,效能高的伺服器可相應權重高一些
3,ip hash
需要在 upstream 當中配置 ip_hash
這種方式通過生成請求源ip的雜湊值,並通過這個雜湊值來找到正確的真實伺服器,
不需要考慮session共享
注意:也可以不用ip,用其他變數來做hash對映。需要配置hash $value。其中$value可以
為請求的某個引數。比如使用者id,商品id等等
4,最少連線數
需要在 upstream 當中配置 least_conn 實現最少連線數
不同請求的處理時間肯定不同,如果a伺服器有較多連線,而b伺服器沒有連線的話,
新進來的請求並不是按照輪詢分配,而是a達到最大連線數的時候將請求分給b。
4,失敗重試
根據上文提到的max_fails=number和fail_timeout=time配合,可以進行失敗重試。
假如:max_fails=2,fail_timeout=60 表示失敗2次之後,60s內不再重試,標記它為不可用伺服器.
過了60s再進行重試。
失敗重試詳情配置:
proxy_next_upstream
語法: proxy_next_upstream type1|type2……;
#type:
error 建立連線,傳送請求,接受請求出現錯誤則重試
timeout 超時則重試
invalid_header header非法則重試
http_500 返回對應的狀態碼則重試
off ...; 停止傳送請求
預設值: proxy_next_upstream error timeout; //預設出錯或者超時則重試
上下文: http, server, location
proxy_next_upstream_tries number
#設定重試次數,預設0表示不限制,注意此重試次數指的是所有請求次數
(包括第一次和之後的重試次數之和)。
proxy_next_upstream_timeout time
# 設定重試最大超時時間,預設0表示不限制。即在
proxy_next_upstream_timeout 時間內允許
proxy_next_upstream_tries 次重試。如果超過了其中乙個設定,
則 nginx 也會結束重試並返回客戶 端響應(可能是錯誤碼)
proxy_send_timeout 傳送給**的超時時間
proxy_read_timeout 和**伺服器連線成功,後端伺服器響應超時時間
proxy_connect_timeout nginx連線後端伺服器超時時間
配置Nginx實現負載均衡
在關於高併發負載均衡一文中已經提到,企業在解決高併發問題時,一般有兩個方向的處理策略,軟體 硬體,硬體上新增負載均衡器分發大量請求,軟體上可在高併發瓶頸處 資料庫 web伺服器兩處新增解決方案,其中web伺服器前面一層最常用的的新增負載方案就是使用nginx實現負載均衡。一 負載均衡的作用 1 功能...
配置Nginx實現負載均衡
在關於高併發負載均衡一文中已經提到,企業在解決高併發問題時,一般有兩個方向的處理策略,軟體 硬體,硬體上新增負載均衡器分發大量請求,軟體上可在高併發瓶頸處 資料庫 web伺服器兩處新增解決方案,其中web伺服器前面一層最常用的的新增負載方案就是使用nginx實現負載均衡。一 負載均衡的作用 1 功能...
配置Nginx實現負載均衡
在關於高併發負載均衡一文中已經提到,企業在解決高併發問題時,一般有兩個方向的處理策略,軟體 硬體,硬體上新增負載均衡器分發大量請求,軟體上可在高併發瓶頸處 資料庫 web伺服器兩處新增解決方案,其中web伺服器前面一層最常用的的新增負載方案就是使用nginx實現負載均衡。一 負載均衡的作用 1 功能...