博客專欄

        EEPW首頁 > 博客 > nginx適配Overlay以及測試工具

        nginx適配Overlay以及測試工具

        發布人:天翼云開發者 時間:2025-01-17 來源:工程師 發布文章

        本文分享自天翼云開發者社區《nginx適配Overlay以及測試工具》,作者:pan

         

        Overlay與Underlay介紹

        Overlay網絡和Underlay網絡是一組相對概念,Overlay網絡是建立在Underlay網絡上的邏輯網絡。而Overlay網絡是通過網絡虛擬化技術,在同一張Underlay網絡上構建出的一張或者多張虛擬的邏輯網絡,如下圖所示。

        詳細資料可查看https://zhuanlan.zhihu.com/p/43660513511.jpg


        ELB使用的技術方案

        天翼云ELB使用VXLAN隔離,需要進行VXLAN的解析與封裝。VXLAN技術是一種大二層的虛擬網絡技術,主要原理是引入一個UDP格式的外層隧道作為數據鏈路層,而原有數據報文內容作為隧道凈荷加以傳輸。

        ELB使用dpvs以及nginx做7層http和https的代理以及分發。報文流向為客戶端(內網或者公網)->ELB(內部為dpvs->nginx)->RS(真正的http服務端)。因為ELB和RS處于同一VXLAN中,那么nginx轉發的報文就需要封裝VXLAN,又因為RS需要知道真實的客戶端IP,nginx也需要獲取客戶端IP并轉發的時候增加X-Forwarded-For。

        dpvs收到報文會解析VXLAN,同時轉發到nginx,因為dpvs采用FULLNAT的模式,nginx如果要獲取真實ip,二者之間采用了Proxy Protocol。Proxy protocol,是一個Internet協議,通過為tcp添加一個很小的頭信息,來方便的傳遞客戶端信息(協議棧、源IP、目的IP、源端口、目的端口等)。因為nginx還需要知道VXLAN的id,對Proxy Protocol進行了改造,增加了vni字段,如下圖。 12.jpgnginx就需要在原生代碼基礎上,增加vni字段的讀取。同時連接upstream時,因為需要封裝vni,通過SO_BINDTODEVICE綁定到具體網卡,完成VXLAN封裝。

         

        如何測試

        因為相比Proxy Protocol多一個字段,通過curl無法自測,通過一個python工具來測試,源碼為https://github.com/codejudas/py-proxy-protocol/。但是需要修改,增加一個vni字段,在代碼中涉及vni的地方均添加字段即可,如下圖。13.jpg 然后修改測試下面的socket.py,測試結果如圖: 14.jpg 

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: nginx 虛擬化

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盱眙县| 禄劝| 杂多县| 井陉县| 义乌市| 嘉鱼县| 奎屯市| 神农架林区| 博罗县| 娱乐| 汪清县| 福清市| 分宜县| 柘城县| 南丰县| 镇江市| 蛟河市| 清徐县| 秦安县| 宾阳县| 丹江口市| 江阴市| 辽阳市| 元阳县| 阜阳市| 塘沽区| 龙门县| 香港 | 吴堡县| 大名县| 美姑县| 绥化市| 潮安县| 白银市| 新干县| 仁化县| 牟定县| 台东县| 托克托县| 淳安县| 泰来县|