1.負載均衡和反向代理介紹
負載均衡是多台伺服器對稱方式組成一個伺服器的集合,每個伺服器都能單獨對外提供服務,通過負載均衡技術,将用戶端請求均勻的配置設定到伺服器集合中的某個伺服器上,然後伺服器獨立響應用戶端的請求,這樣解決了高并發的通路。
反向代理是指以代理伺服器接受使用者請求,然後将請求,轉發給内部網絡上的伺服器,并将從伺服器上得到的結果傳回給使用者,這時代理伺服器對外表現為一個伺服器,代理伺服器上沒有儲存任何的網頁資料,所有的靜态網頁和cgi程式都儲存在内部網絡上的web伺服器上,增加了web服務的安全性。
2.常見的負載均衡方法
2.1使用者手動選擇,在下載下傳業務的網站中常見。
2.2dns輪詢,一個域名,可以解析到多個伺服器。但是可靠性不高,一旦某個伺服器當機,解析到此伺服器的請求就不能響應,而且dns緩存時間比較長,即使去掉dns中伺服器解析也不能立即生效,另外一個問題負載不均衡,因為不能反映各個伺服器的運作情況和性能,同時dns緩存又使解析都到了同一個伺服器上。
2.3四/七層負載均衡
這個四七層指的是osi标準的網絡模型,四層是傳輸層,七層是應用層。
四層負載均衡可以使用硬體實作如:f5 big-ip、citrix netscaler等,價格不菲。不過也可以使用軟體的方式實作,代表是國人章文嵩博士研發的lvs。
七層負載均衡大體使用http反向代理方式,代表是nginx、haproxy等,這裡主要說下nginx,因為它能很好配置,同時可以按輪詢,iphash、權重、urlhash等方式實作負載均衡,也能檢查後端伺服器的健康狀态。
3.一個nginx反向代理伺服器的大體配置
當然通過upstream指令和server指令完全可以實作反向代理的動靜網頁分離,通過定義location的請求檔案格式,去通路靜态緩存伺服器和不同的伺服器組,上文沒有多說這方面。
4.nginx負載均衡的http upstream子產品
4.1 ip——hash指令
後端是多個動态應用伺服器時,能夠将一個用戶端的請求定義到同一台伺服器上,能解決session問題,但是這樣權重等方法失去效果,負載均衡不好,能session共享來替換它。
4.2 server指令
主要是後端伺服器的名稱,參數,名稱可以是域名,ip端口。參數weigth權重,max_fails對後端伺服器請求失敗次數,fail_timeout請求失敗後逾時時間,down标記伺服器永久離線,backup标記伺服器在非backup伺服器全部當機或者都繁忙時啟用。
4.3 upstream指令
定義伺服器組,變量:$upstream_addr 請求的upstream伺服器ip, $upstream_status伺服器的應答狀态,$upstream_response_time響應時間,$upstream_http_$header 任意的http協定頭資訊。