lvs十种调度策略+三种模式
LVS負載均衡
負載均衡技術(模式):
1、lvs-DR(direct?routing)直接路由模式:客戶進來的請求先經過調度器,然后再丟給服務器,最后由服務器直接發送請求給客戶端(不需要再次經過調度器,這個可以跟很多服務器,因為它回應請求不需要經過調度器)。一般是在公司,就是同一網絡里用。?性能好,安全性差。但這個用的最多。
?
2、LVS-NAT(Network?address?translation):??客戶進來的請求先經過調度器,然后再丟給服務器,接著服務器再把請求丟給調度器,從而最后是由調度器來回應給客戶端。(這樣的話,調度器比較忙,所以調度器后面不能跟太多服務器,3-5臺即可,這個ddos攻擊的時候相對來說更安全一些,因為服務器沒有直接暴露在外面,是隱藏在調度器后面,相對性能會差一些)
?
3、LVS-TUN(IP?tunneling):隧道模式?:??起到備份或是cdn加速的功能。備份:例如有3臺服務器,其中一臺壞掉了,那么請求就會分給其他兩臺服務器。cdn加速:北京的請求就分給北京的服務器,上海的請求就分給上海的服務器,武漢的就分給武漢的服務器,這樣來平均負載。用的最少
? ? ? ? ? ?lvs的IP地址類型?
?
調度算法
lvs分為靜態(四種)與動態(六種)
輪循調度(rr)
:將外部請求按順序輪流分配到集群中的真實服務器上,它均衡的對待每一臺服務器,而不管服務器上實際的連接數和負載數。
優點:速度快,將外部請求按順序輪流分配到集群中的真實服務器上。
缺點:不管服務器上實際的連接數和負載數。權重無效,因為不管怎么設置,它總是均衡的將外部請求按順序輪流分配到集群中的真實服務器上。
加權輪循(wrr):
數字越大,權重越高:調度算法根據真實服務器的不同處理能力來調度訪問請求,這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的附載情況,并動態的調整其權重值。
優點:可根據服務器的性能來設置權重,從而達到負載。
缺點:不管服務器忙與不忙,都會按照你之前的權重來進行負載訪問。
根據權重來判斷。
?
目標地址散列(DH)
:根據請表求的目標ip地址,作為散列鍵(hash?key)?從靜態分配的散列表找出對應的服務器,若服務器是可用的且未超載,將請求發送到服務器,否則返回空。(相當于給wrr策略做了一次擴展)
優點:1、首先根據權重來訪問哪一個服務器,然后第一個請求訪問服務器后,接著只要是這個ip進行的訪問,都會在這個服務器上,有緩存來進行加速訪問。2、原客戶端ip進行訪問的同時,不會去跑到第二個服務器上。
缺點:不管你忙與不忙,都會按照你之前的權重來進行訪問。后端所跟的服務器不會太多,否則director?server的壓力就會變得過大。
源地址散列(SH)
:根據請表求的源ip地址,作為散列鍵(hash?key)?從靜態分配的散列表找出對應的服務器,若服務器是可用的且未超載,將請求發送到服務器,否則返回空。(從哪個接口出去,再從哪個接口回來,相當于給rr做了次擴展)
Iptables里有個狀態跟蹤,必須從哪個網關(接口)出去,再從哪個網關(接口)回來,否則這個狀態就會沒有意義。這個也是一樣,必須是從哪個接口出去,再從哪個接口回來。(目的保證)
靜態的有緩存,而動態的沒有,靜態的比較笨一些,動態的智能一些。
1、最少鏈接:(LC):
根據活動連接數與非活動鏈接數的總和進行判斷。
活動連接:請求服務訪問,例如提交數據或是在往數據庫里寫東西的時候。
非活動連接:例如:已經建立起3次握手了。在訪問網頁的同時,停留在網頁中,不提交數據或是不寫數據的時候。
連接數=活動連接數+非活動連接數?來判斷的
開銷:最后計算請求書哪個最小就丟給誰??
?
???????
Server1:共有1000個請求(例如),900個變成非活動連接,100個活動連接,就是用100*256+900(非活動連接)
Server2:共有1000個請求,結果全部成為非活動連接(都走了)0*256+1000(非活動連接)??
根據以上算法,來判斷哪個請求較少,誰小就丟給誰。
2、加權最少鏈接:(WLC):
不設置調度算法,默認是wlc,(開銷除以權重(100*256+900)/3),
還是拿上面的那個例子說
Server1:權重是3??(100*256+900)/3
Server2:權重是1???(0*256+1000)/1
誰少就丟給誰。
3、基于局部性的最少鏈接(LBLC):
在DH的基礎上做微調,簡單的說就是把DH做成動態調度算法。
DH:訪問一個請求的時候,會一直在第一次訪問時的那臺服務器上。
而LBLC就是盡量讓它在第一次訪問的服務器上,但如果發現訪問的原來第一次服務器上的數據過大時,它便會去其它的服務器上。
算發還是用的WLC的算法。
4、帶復制的基于局部性最少鏈接(LBLCR):
簡單說就是又在LBLC的基礎上做的微調,把自己已有的緩存復制給別人(緩存共享)
?
5、最短的期望的延遲(SED):在WLC的基礎之上做的微調。
不考慮非活動連接數,只考慮活動連接數。(這種指的是特殊情況下做的微調)
例如:活動連接請求都為0???
Server1:權重是1???(0+1)*256/1=256
Server2:權重是10??(0+1)*256/10=25.6
當數據少的時候使用這個
活動連接+1(加1目的是為了讓它有誤差,當連接數少的時候會有突出)*256除以權重
這樣的目錄就是為了當一臺服務器的權重過高時,為了減少權重高一些的服務器的壓力,讓權重低的服務器幫忙也分擔一些出來。
6、最少隊列調度(NQ):只要是服務器端活動鏈接數為零,就丟給活動鏈接數為零的那臺服務器。(這種是特殊情況下做的微調)
本文轉自silence博客51CTO博客,原文鏈接http://blog.51cto.com/silencezone/1688672如需轉載請自行聯系原作者
a120518129
總結
以上是生活随笔為你收集整理的lvs十种调度策略+三种模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RHEL/CentOS6.4 x64 V
- 下一篇: 10月第3周安全回顾 中小企业易受攻击