LVS-DR工作原理圖文詳解
原創【51CTO獨家特稿】LVS如今早已不再新鮮,在生產環境中的應用非常廣泛。它的原理相信運維的同行們多少都知道。但是你到底了解到什么程度呢?
我們都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三種模式,其中DR模式意為Direct Routing(直接路由),是調度器與實際服務器都有一塊網卡連在同一物理網段上的情況。本文主要對LVS/DR模式原理進行了闡述,另外還有一篇FAQs,給有相關疑問的朋友們做個參考。
LVS-DR工作原理詳解
為了闡述方便,我根據官方原理圖另外制作了一幅圖,如下圖所示:VS/DR的體系結構:
我將結合這幅原理圖及具體的實例來講解一下LVS-DR的原理,包括數據包、數據幀的走向和轉換過程。
官方的原理說明:Director接收用戶的請求,然后根據負載均衡算法選取一臺realserver,將包轉發過去,***由realserver直接回復給用戶。
實例場景設備清單:
說明:我這里為了方便,client是與vip同一網段的機器。如果是外部的用戶訪問,將client替換成gateway即可,因為IP包頭是不變的,變的只是源mac地址。
① client向目標vip發出請求,Director接收。此時IP包頭及數據幀頭信息如下:
② VS根據負載均衡算法選擇一臺active的realserver(假設是192.168.57.122),將此RIP所在網卡的mac地址作為目標mac地址,發送到局域網里。此時IP包頭及數據幀頭信息如下:
③ realserver(192.168.57.122)在局域網中收到這個幀,拆開后發現目標IP(VIP)與本地匹配,于是處理這個報文。隨后重新封裝報文,發送到局域網。此時IP包頭及數據幀頭信息如下:
④ 如果client與VS同一網段,那么client(192.168.57.135)將收到這個回復報文。如果跨了網段,那么報文通過gateway/路由器經由Internet返回給用戶。
以上就是對LVS/DR模式的原理介紹。如果還有其他問題不明白的,可以參考作者另外一篇LVS/DR模式原理剖析的FAQs。
作者簡介:戴海軍(daihaijun@gmail.com),現就職于51.com,應用運維工程師。目前關注LVS/Nginx/Keepalived負載均衡和高可用技術。
【編輯推薦】