lvs-dr模式原理详解和可能存在的“假负载均衡”
原文地址:?http://blog.csdn.net/lengzijian/article/details/8089661
lvs-dr模式原理
轉載注明出處:http://blog.csdn.net/lengzijian/article/details/8089661
先附上一張原理圖:
為了更清晰的表述lvs-dr原理,我們用tcpdump工具打印出tcp數據,查看mac地址的更改情況,繪制出如下的時序圖;
圖1表示201收到轉發消息,圖2表示200收到轉發請求(下面兩張為錯誤的圖,錯誤的理由下面會詳細解釋)
上面的信息全部用tcpdump命令取得(tcpdump? -e -X-A -n -s 10000 port 80;具體含義這里就不詳細講解了),用上述命令分別在149、200、201上執行。
圖只是輔助理解,剛開始不用研究太深入??梢愿鶕旅娴闹v解慢慢體會。
首先,從兩幅圖中我們都能看到這樣的流程:
TCP建立(三次握手)->交換機發送請求->服務器響應請求->TCP連接斷開(四次揮手)
下面解答和分享下我所遇到的問題:
問題1:按照我之前對負載均衡的理解,應該是149收到交換機發來的消息,然后轉發給201或者200,為什么是201先收到交換機發來的數據,然后轉發到149呢?
這個問題也困擾了我好久,后來我把201網線斷掉之后,重新嘗試,發現149和200都沒有收到交換機發過來的消息,心想應該是被交換機緩存了(猜測)。之后把服務全停掉,重新設置lvs配置,然后重啟。之后看到的tcp流,就和預想中的一樣。
當200接收到消息時,只有149和200會收到tcp流信息。同理201;
有人會說我這是多此一舉,花了這么久的圖,最后還是錯的。其實不是這樣。起碼以后我知道如何查看tcp是否正常,表面上看lvs轉發消息時正常的,其實tcp流多走了幾步。表面上是負載均衡,其實一臺realserver負載非常高。。。。這里可能會導致很多問題。
有人想要正常的tcp流圖,這里本人不想再多畫了,如果有時間再補上吧??梢园凑丈厦娴膱D,把交換機接受的數據移植到149上,就是正常的圖啦。
下面補上正確的lvs-er模式的tcp流圖,201收到消息時同理:
有了正確的圖理解原理更加方便了。
問題2:vs-dr如何轉發消息的?
由上圖3中第二步驟可以看出,director接受到交換機的請求,然后根據算法選取一臺realserver,并且把包轉發過去,realserver接收到包后,直接把結果返回給交換機,而沒有走director。
具體步驟:
1.????接收到源mac地址為38:22:d6:6c:07:5d,目的地址為00:1A:4D:8C:FA:D5。源ip為192.168.0.237、目的ip為192.168.30.149
2.????vs根據負載均衡,把源mac地址改為00:1A:4D:8C:FA:D5,目的地址改為00:26:18:45:D7:88。源ip和目的ip都不變
3.????realserver(00:26:18:45:D7:88)接收到請求,做出響應。源ip改為192.168.30.149,目的ip改為192.168.0.237
4.????realserver的消息源mac為00:26:18:45:D7:88,目的mac地址為38:22:d6:6c:07:5d。所以跳過了149,直接返回客戶端請求的信息。
今天畫圖畫累了,明天有空再講下具體配置問題。。。
轉載于:https://www.cnblogs.com/AloneSword/p/3935897.html
總結
以上是生活随笔為你收集整理的lvs-dr模式原理详解和可能存在的“假负载均衡”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全国计算机等级考试题库二级C操作题100
- 下一篇: 各类曲线的参数方程_曲线的参数方程