今年我將開始我的最後一個undegraduate項目,基本上我會爲Linux實現一個簡單的基於服務器的負載平衡器。目的是在OSI第4層(TCP)上使其與應用無關(Web服務器,FTP服務器,電子郵件服務器等)。負載均衡器需要偵聽所有端口並將包轉發到配置的真實服務器,並將其轉發到各自請求的端口(遵循循環法等算法)。最終的本科項目「負載平衡服務器」?
另一個目的是將此負載平衡器作爲內核模塊(與Linux的本地負載平衡器LVS一樣),並使另一個用戶空間管理應用程序進行配置。
但是我有很多疑問, 做這個負載均衡器的唯一方法是使用內核模塊?它不能只是一個用戶空間程序?
它不能在第3層(IP)?我在哪裏接入IP數據包並處理所有邏輯?
請幫助我解決這些疑問,在項目開始時指導我很重要。
哇,很多信息。謝謝你,兄弟! 讓我看看是否明白你的意思,[1]在內核空間開發,我將在第3層使用netfilters API(它只適用於IP數據包?)。 [2]如果我想在用戶空間開發,我可以在第4層工作,例如,製作iptables(TCP代理服務)的前端。 我還不知道,但我認爲第3層平衡器是最好的方法,因爲我不會依賴應用程序/端口。只需處理IP數據包。 –
最後一個疑問是,使用netfilter和內核模塊編程對本科生來說會很沉重嗎?我沒有使用內核模塊編程的經驗,但是我對linux和網絡有很好的理解,並且我會提出一個非常簡單的Load Balancer ... –
由於某種原因,我還沒有收到您的評論通知。但讓我回答:1:是的,你會使用netfilters鉤子。 2:將iptables作爲前端並不意味着你的應用程序在「第4層」工作,這僅僅意味着你在用戶級使用了一些SO的資源,就這些。如果你想在第4層開發,那麼你應該實現使用netfilter的鉤子或者使用任何結束使用它的庫(比如Wireshark)。這只是你想要完成的事情。第3層可能不一定更好......所有這些都有其用途。 –