要理解負載均衡,必須先搞清楚正向**和反向**。
正向**與反向** 注:
正向**,**的是使用者。
反向**,**的是伺服器
什麼是負載均衡
當一台伺服器的單位時間內的訪問量越大時,伺服器壓力就越大,大到超過自身承受能力時,伺服器就會崩潰。為了避免伺服器崩潰,讓使用者有更好的體驗,我們通過負載均衡的方式來分擔伺服器壓力。
我們可以建立很多很多伺服器,組成乙個伺服器集群,當使用者訪問**時,先訪問乙個中間伺服器,在讓這個中間伺服器在伺服器集群中選擇乙個壓力較小的伺服器,然後將該訪問請求引入該伺服器。如此以來,使用者的每次訪問,都會保證伺服器集群中的每個伺服器壓力趨於平衡,分擔了伺服器壓力,避免了伺服器崩潰的情況。
負載均衡是用反向**的原理實現的。
負載均衡的作用
負載均衡:分攤到多個操作單元上進行執行,和它的英文名稱很匹配。就是我們需要乙個排程者,保證所有後端伺服器都將效能充分發揮,從而保持伺服器集群的整體效能最優,這就是負載均衡。
負載均衡這裡面涉及的東西相對也是比較多的,理論就不說太多了,網上,書上很多,今天我們就利用nginx伺服器來實現乙個簡單的負載均衡
負載均衡演算法
源位址雜湊法:根據獲取客戶端的ip位址,通過雜湊函式計算得到乙個數值,用該數值對伺服器列表的大小進行取模運算,得到的結果便是客服端要訪問伺服器的序號。採用源位址雜湊法進行負載均衡,同一ip位址的客戶端,當後端伺服器列表不變時,它每次都會對映到同一台後端伺服器進行訪問。
輪詢法:將請求按順序輪流地分配到後端伺服器上,它均衡地對待後端的每一台伺服器,而不關心伺服器實際的連線數和當前的系統負載。
隨機法:通過系統的隨機演算法,根據後端伺服器的列表大小值來隨機選取其中的一台伺服器進行訪問。
加權輪詢法:不同的後端伺服器可能機器的配置和當前系統的負載並不相同,因此它們的抗壓能力也不相同。給配置高、負載低的機器配置更高的權重,讓其處理更多的請;而配置低、負載高的機器,給其分配較低的權重,降低其系統負載,加權輪詢能很好地處理這一問題,並將請求順序且按照權重分配到後端。
加權隨機法:與加權輪詢法一樣,加權隨機法也根據後端機器的配置,系統的負載分配不同的權重。不同的是,它是按照權重隨機請求後端伺服器,而非順序。
最小連線數法:由於後端伺服器的配置不盡相同,對於請求的處理有快有慢,最小連線數法根據後端伺服器當前的連線情況,動態地選取其中當前積壓連線數最少的一台伺服器來處理當前的請求,盡可能地提高後端服務的利用效率,將負責合理地分流到每一台伺服器。
負載均衡的幾種常用方式
1、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。
upstream backserver
2、weight
指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的
情況。
upstream backserver
權重越高,在被訪問的概率越大,如上例,分別是30%,70%。
3、上述方式存在乙個問題就是說,在負載均衡系統中,假如使用者在某台伺服器上登入了,那麼該使用者第二次請求的時候,因為我們是負載均衡系統,每次請求都會重新定位到伺服器集群中的某乙個,那麼已經登入某乙個伺服器的使用者再重新定位到另乙個伺服器,其登入資訊將會丟失,這樣顯然是不妥的。
我們可以採用ip_hash指令解決這個問題,如果客戶已經訪問了某個伺服器,當使用者再次訪問時,會將該請求通過雜湊演算法,自動定位到該伺服器。
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。
upstream backserver
4、fair(第三方)
按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream backserver
5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。
upstream backserver
每個裝置的狀態設定為:
1.down 表示單前的server暫時不參與負載
2.weight 預設為1.weight越大,負載的權重就越大。
3.max_fails:允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream模組定義的錯誤
4.fail_timeout:max_fails次失敗後,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。
配置例項:
Nginx實現負載均衡
負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬 增加吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web伺服器 ftp伺服器 企業關鍵應用伺服器和其它關...
nginx實現負載均衡
目錄結構 conf 配置目錄 html 靜態頁面目錄 logs 日誌目錄 sbin 主程式 nginx支援的負載均衡方式 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的...
nginx實現負載均衡
初步設想 1個前端伺服器 n個應用伺服器,實現不宕機發布。前提 後端應用共享session,可以考慮redis實現。初步實驗 nginx 2個tomcat執行測試 先準備乙個nginx,nginx.conf檔案內容如下 然後準備2個tomcat 設定埠分別為8084 8086。在root資料夾下面各...