一、ipvs的三種負載均衡技術
客戶通過virtual ip address(虛擬服務的ip位址)訪問網路服務時,請求報文到達排程器,排程器根據連線排程演算法從一組真實伺服器中選出一台伺服器,將報文的目標位址 virtual ip address改寫成選定伺服器的位址,報文的目標埠改寫成選定伺服器的相應埠,最後將修改後的報文傳送給選出的伺服器。同時,排程器在連線hash 表中記錄這個連線,當這個連線的下乙個報文到達時,從連線hash表中可以得到原選定伺服器的位址和埠,進行同樣的改寫操作,並將報文傳給原選定的服務 器。當來自真實伺服器的響應報文經過排程器時,排程器將報文的源位址和源埠改為virtual ip address和相應的埠,再把報文發給使用者。我們在連線上引入乙個狀態機,不同的報文會使得連線處於不同的狀態,不同的狀態有不同的超時值。在tcp 連線中,根據標準的tcp有限狀態機進行狀態遷移,這裡我們不一一敘述,請參見w. richard stevens的《tcp/ip illustrated volume i》;在udp中,我們只設定乙個udp狀態。不同狀態的超時值是可以設定的,在預設情況下,syn狀態的超時為1分鐘,established狀態的超 時為15分鐘,fin狀態的超時為1分鐘;udp狀態的超時為5分鐘。當連線終止或超時,排程器將這個連線從連線hash表中刪除。
這樣,客戶所看到的只是在virtual ip address上提供的服務,而伺服器集群的結構對使用者是透明的。對改寫後的報文,應用增量調整checksum的演算法調整tcp checksum的值,避免了掃瞄整個報文來計算checksum的開銷。
vs/tun 的工作流程如圖5所示:它的連線排程和管理與vs/nat中的一樣,只是它的報文**方法不同。排程器根據各個伺服器的負載情況,動態地選擇一台伺服器, 將請求報文封裝在另乙個ip報文中,再將封裝後的ip報文**給選出的伺服器;伺服器收到報文後,先將報文解封獲得原來目標位址為vip的報文,伺服器發 現vip位址被配置在本地的ip隧道裝置上,所以就處理這個請求,然後根據路由表將響應報文直接返回給客戶。
在這裡需要指出,根據預設的tcp/ip協議棧處理,請求報文的目標位址為vip,響應報文的源位址肯定也為vip,所以響應報文不需要作任何修改,可以直接返回給客戶,客戶認為得到正常的服務,而不會知道究竟是哪一台伺服器處理的。
vs/dr 的工作流程:它的連線排程和管理與vs/nat和vs/tun中的一樣,它的報文**方法又有不同,將報文直接路由給目標伺服器。在vs/dr 中,排程器根據各個伺服器的負載情況,動態地選擇一台伺服器,不修改也不封裝ip報文,而是將資料幀的mac位址改為選出伺服器的mac位址,再將修改後 的資料幀在與伺服器組的區域網上傳送。因為資料幀的mac位址是選出的伺服器,所以伺服器肯定可以收到這個資料幀,從中可以獲得該ip報文。當伺服器發現 報文的目標位址vip是在本地的網路裝置上,伺服器處理這個報文,然後根據路由表將響應報文直接返回給客戶。
二、ipvs在核心中實現的八種連線排程演算法
bfs簡介與說明
對於搜尋其實我還不是太會 對於dfs 不過我有把握講bfs 寬度優先搜尋演算法 又稱廣度優先搜尋 是最簡便的圖的搜尋演算法之一,這一演算法也是很多重要的圖的演算法的原型。dijkstra單源最短路徑 演算法和prim最小生成樹 演算法都採用了和寬度優先搜尋類似的思想。其別名又叫bfs,屬於一種盲目搜...
LVS幾種模式簡介
1.nat 位址轉換技術 2.dr 直接路由模式 3.ip隧道 ip tunneling 4.fullnat模式 1.dr模式 lvs dr原理圖 實際圖 lvs的dr模式原理 1.通過更改資料報的mac位址實現資料報 的 2.所有的節點和lvs要求處於乙個區域網內 dr模式的特點 通過排程器上修改...
LVS簡介及使用
一 lvs是什麼?lvs的英文全稱是 linux virtual server 即linux 虛擬伺服器。它是我們國家的章文嵩博士的乙個開源專案。在 linux 記憶體2.6 中,它已經成為核心的一部分,在此之前的核心版本則需要重新編譯核心。二.lvs 能幹什麼?lvs主要用於多伺服器的負載均衡。它...