爲何須要負載均衡nginx
負載均衡原理正則表達式
負載均衡做用算法
負載均衡實現sql
負載均衡分類apache
負載均衡應用場景後端
爲何須要負載均衡緩存
當系統面臨大量用戶訪問,負載太高的時候,一般會使用增長服務器數量來進行橫向擴展,使用集羣和負載均衡提升整個系統的處理能力。安全
從單機網站到分佈式網站,很重要的區別是業務拆分和分佈式部署,將應用拆分後,部署到不一樣的機器上,實現大規模分佈式系統。分佈式和業務拆分解決了,從集中到分佈的問題,可是每一個部署的獨立業務還存在單點的問題和訪問統一入口問題,爲解決單點故障,咱們能夠採起冗餘的方式。將相同的應用部署到多臺機器上。解決訪問統一入口問題,咱們能夠在集羣前面增長負載均衡設備,實現流量分發。服務器
負載均衡的原理網絡
系統的擴展可分爲縱向(垂直)擴展和橫向(水平)擴展。
縱向擴展,是從單機的角度經過增長硬件處理能力,好比CPU處理能力,內存容量,磁盤等方面,實現服務器處理能力的提高,不能知足大型分佈式系統(網站),大流量,高併發,海量數據的問題。
所以須要採用橫向擴展的方式,經過添加機器來知足大型網站服務的處理能力。好比:一臺機器不能知足,則增長兩臺或者多臺機器,共同承擔訪問壓力。
應用集羣:將同一應用部署到多臺機器上,組成處理集羣,接收負載均衡設備分發的請求,進行處理,並返回相應數據。
負載均衡設備:將用戶訪問的請求,根據負載均衡算法,分發到集羣中的一臺處理服務器。(一種把網絡請求分散到一個服務器集羣中的可用服務器上去的設備)
負載均衡的做用
1.解決併發壓力,提升應用處理性能(增長吞吐量,增強網絡處理能力);
2.提供故障轉移,實現高可用;
3.經過添加或減小服務器數量,提供網站伸縮性(擴展性);
4.安全防禦;(負載均衡設備上作一些過濾,黑白名單等處理)
負載均衡的分類
1)二層負載均衡(mac)
根據OSI模型分的二層負載,通常是用虛擬mac地址方式,外部對虛擬MAC地址請求,負載均衡接收後分配後端實際的MAC地址響應)
2)三層負載均衡(ip)
通常採用虛擬IP地址方式,外部對虛擬的ip地址請求,負載均衡接收後分配後端實際的IP地址響應)
3)四層負載均衡(tcp)
在三次負載均衡的基礎上,用ip+port接收請求,再轉發到對應的機器。
4)七層負載均衡(http)
根據虛擬的url或IP,主機名接收請求,再轉向相應的處理服務器。
最多見的四層和七層負載均衡
1)四層的負載均衡就是基於IP+端口的負載均衡:在三層負載均衡的基礎上,經過發佈三層的IP地址(VIP),而後加四層的端口號,來決定哪些流量須要作負載均衡。
對應的負載均衡器稱爲四層交換機(L4 switch),主要分析IP層及TCP/UDP層,實現四層負載均衡。此種負載均衡器不理解應用協議(如HTTP/FTP/MySQL等等)。
實現四層負載均衡的軟件有:
F5:硬件負載均衡器,功能很好,可是成本很高。
lvs:重量級的四層負載軟件
nginx:輕量級的四層負載軟件,帶緩存功能,正則表達式較靈活
haproxy:模擬四層轉發,較靈活
2)七層的負載均衡就是基於虛擬的URL或主機IP的負載均衡
對應的負載均衡器稱爲七層交換機(L7 switch),除了支持四層負載均衡之外,還有分析應用層的信息,如HTTP協議URI或Cookie信息,實現七層負載均衡。此種負載均衡器能理解應用協議。
實現七層負載均衡的軟件有:
haproxy:天生負載均衡技能,全面支持七層代理,會話保持,標記,路徑轉移;
nginx:只在http協議和mail協議上功能比較好,性能與haproxy差很少;
apache:功能較差
Mysql proxy:功能尚可。
總的來講,通常是lvs作4層負載;nginx作7層負載;haproxy比較靈活,4層和7層負載均衡都能作。
負載均衡應用場景
場景一:應用於高訪問量的業務
若是您的應用訪問量很高,您能夠經過配置監聽規則將流量分發到不一樣的服務器上。
場景二:橫向擴張系統
您能夠根據業務發展的須要,經過隨時添加和移除服務器,來擴展應用系統的服務能力,適用於各類Web服務器和App服務器。
場景三:消除單點故障
當其中一部分服務器發生故障後,負載均衡會自動屏蔽故障的服務器,將請求分發給正常運行的服務器,保證應用系統仍能正常工做。
場景四:同城容災 (多可用區容災)
爲了提供更加穩定可靠的負載均衡服務,當主可用區出現機房故障或不可用時,負載均衡仍然有能力在很是短的時間內切換到另一個備可用區恢復服務能力;當主可用區恢復時,負載均衡一樣會自動切換到主可用區提供服務,保證服務依然正常運行。
轉載:https://my.oschina.net/u/3778090/blog/2050665