我最近一直在閱讀關於OpenOnload,它在某些網絡操作期間繞過Linux內核來提高性能。這讓我很好奇如何處理同一臺服務器上的LXC容器之間的網絡數據。如果我將數據從一個發送到另一個,它是否會多次通過內核TCP堆棧?如果是這樣,與共享內存(如果我不使用LXC,我可能會使用它)相比,這會增加多少延遲?對於LXC-LXC通信是否有某種內核旁路可行?網絡數據在同一臺物理主機上的兩個LXC容器之間有什麼路徑?
1
A
回答
2
如你所知:
Linux內核包括用於隔離資源(CPU,內存 ,塊I/O,網絡等),不需要啓動任何 虛擬機的cgroup。 Cgroups還提供名稱空間隔離至 ,完全隔離應用程序對操作環境的看法,包括進程樹,網絡,用戶ID和已安裝的文件系統在內的 。
LXC結合了cgroups和名稱空間支持,爲應用程序提供了一個獨立的 環境。 您問: 這讓我很好奇如何處理同一臺服務器上的LXC容器之間的網絡數據。
這就像在Linux上mashine一個進程進行通信在同一mashine另一/相同的過程,但如果他將使用一個或兩個Linux的橋樑(內部容器LXC網絡)+不同的cgroup /命名空間中的橋樑。
如果我將數據從一個發送到另一個,是否通過 多次內核TCP堆棧多次?如果是這樣,這個 與共享內存相比有多大的延遲(如果我不使用LXC,我可能會使用這個延遲)?對於LXC-LXC 通信是否有某種內核旁路可行?
這不是很大的延遲,但是當我用PHP-FPM作爲守護進程,在聽取和127.0.0.1:8888改變它偵聽Unix套接字有RPS的增加(每秒頁)。 Performance of unix sockets vs TCP ports
PS: 您可以在LXC容器上使用unix套接字。例如,我用於在所有容器之間創建共享目錄(例如:/tmp/mysql.sock):
mount --bind /lxc/shared /lxc/shared
mount --make-unbindable /lxc/shared
相關問題
- 1. 在同一主機上的兩個容器之間的通信
- 2. LXC。容器的IP來自與主機相同的網絡
- 3. MAMP:在同一網絡上的兩臺計算機之間共享數據庫
- 4. 什麼可能導致同一臺物理服務器上的兩臺虛擬機之間的延遲?
- 5. 牧場主:在同一臺物理機器上的多個主機
- 6. 兩個Docker容器之間的「java.net.NoRouteToHostException:沒有路由到主機」
- 7. 網絡上兩臺機器之間的消息傳遞
- 8. 從傀儡主機管理LXC容器
- 9. Java - 在同一網絡上連接兩臺機器
- 10. 爲什麼同一路由器上的兩臺機器上的IP地址有不同的子網?
- 11. 查找同一碰撞路徑上兩個物體之間的接觸時間?
- 12. 在兩臺主機之間同步數據庫
- 13. 多臺主機在同一網絡中的碼頭網絡
- 14. 使用網絡連接在同一個房間內的兩臺計算機之間共享數據庫?
- 15. 聚合物 - 同一臺機器上的兩臺瀏覽器
- 16. 基於路徑的多個容器和交換容器的一臺主機
- 17. 在同一網絡上的兩個Android設備之間發送數據
- 18. 兩個網絡之間的Linux路由
- 19. 在兩臺不同的機器上的服務器之間複製數據 - SQL
- 20. 兩臺機器之間的Java網絡通信
- 21. 網絡C上另一臺服務器上的引用路徑#
- 22. 在不同網絡上的兩臺計算機之間發送數據(通過互聯網)
- 23. 在同一臺機器上的兩個網頁之間傳遞數據,無回傳
- 24. 在同一臺服務器上的兩個數據庫之間的Mirroir
- 25. 在Windows上的兩個網絡插座之間配管數據
- 26. TCP/2臺的計算機之間IP Matlab的同一網絡
- 27. 兩個固定主機之間的網絡延遲變化
- 28. 從一臺主機到另一臺主機的網絡共享
- 29. 在多臺機器上管理主目錄有一些不同?
- 30. 爲什麼Traefik無法在同一網絡上找到容器?