配置IP版本親和轉寄

更新時間:
Copy as MD

ALB雙棧執行個體支援IP版本親和模式,開啟後可將IPv4請求轉寄至IPv4後端伺服器、IPv6請求轉寄至IPv6後端伺服器,實現按IP協議版本的流量調度,簡化網路架構。

方案架構

問題情境

在業務從 IPv4 向 IPv6 遷移的過程中,IPv4 與 IPv6 服務常常需要共存。當目標伺服器組中同時包含 IPv4 和 IPv6 地址的後端伺服器時,ALB 預設不區分用戶端請求的 IP 協議版本,而是僅依據調度演算法(如加權輪詢或加權最小串連數)向後端轉寄流量。

這可能導致跨協議轉寄現象——例如,來自 IPv6 用戶端的請求被轉寄到僅支援 IPv4 的後端伺服器,或反之。此類協議不匹配會引發以下問題:

  • 後端應用僅監聽特定協議版本的地址,收到跨協議轉寄的請求後無法正常處理,導致業務中斷。

  • 部分業務需要根據用戶端IP協議版本進行差異化處理(如按協議版本分流、IPv6優先路由等),混合轉寄無法滿足此類需求。

解決方案

ALB伺服器組支援IP版本親和模式,開啟後IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端,避免跨協議轉寄導致的業務異常。當某一協議的所有後端健全狀態檢查失敗時,該協議的請求在同協議後端內儘力轉寄,不會跨協議轉寄。

適用範圍

使用者已註冊自訂網域名。本文計劃將ALB執行個體部署於華東2(上海)地區,因此網域名稱需要完成ICP備案

操作步驟

在開始操作前,請確保已在華東2(上海)地區建立一個專用網路VPC1,分別在可用性區域E和可用性區域G建立交換器VSW1VSW2,且交換器已開啟IPv6

1. 建立ECS執行個體並部署服務

  1. 參考下表配置,建立兩台ECS執行個體。

    執行個體名稱

    地區

    VPC

    交換器

    IP版本

    鏡像

    ecs-ipv4

    華東2(上海)

    VPC1

    VSW1

    IPv4

    Alibaba Cloud Linux 3.2104 LTS 64

    ecs-ipv6

    VSW2

    IPv6

    購買ECS執行個體時,在網路與安全性群組配置項下勾選免費分配 IPv6 地址
  2. 遠端連線ecs-ipv4ecs-ipv6,執行以下命令,部署Nginx服務。

    ecs-ipv4

    sudo yum install -y nginx
    sudo systemctl start nginx
    echo "Hello from IPv4 backend" | sudo tee /usr/share/nginx/html/index.html

    ecs-ipv6

    sudo yum install -y nginx
    sudo systemctl start nginx
    echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html
  3. 在兩台ECS執行個體所屬安全性群組添加入方向規則,允許存取請求流量。請確保規則具備足夠高的優先順序。

    執行個體名稱

    授權策略

    協議

    訪問來源

    訪問目的(本執行個體)

    ecs-ipv4

    允許

    自訂TCP

    選擇IPv4後,選擇VPC網段

    選擇連接埠後,選擇HTTP(80)

    ecs-ipv6

    選擇IPv6後,選擇VPC網段

    相關操作,可參考自訂購買執行個體ECS遠端連線操作指南配置安全性群組規則

2. 建立雙棧ALB執行個體

  1. 登入ALB控制台,選擇華東2(上海)地區,單擊建立應用型負載平衡

  2. 完成以下配置,其他選項保持預設,單擊立即購買

    • 執行個體網路類型:選擇公網

    • VPC:選擇VPC1

    • 可用性區域:選擇可用性區域E和可用性區域G及對應交換器VSW1VSW2,並自動分配公網IP

    • 協議版本:選擇雙棧

    • 功能版本(執行個體費):選擇標準版

      IP版本親和模式僅支援標準版和WAF增強版ALB執行個體,基礎版和擴充版暫不支援。
  3. 建立完成後,單擊執行個體ID進入執行個體詳情頁。在基本資料地區找到網路類型,單擊IPv6:私網右側的變更網路類型。在彈出的視窗單擊確定變更,並確認變更成功。

3. 建立雙棧伺服器組並開啟親和模式

  1. 伺服器組控制台,單擊建立伺服器組

  2. 完成以下配置,單擊建立

    • 伺服器群組類型 :選擇伺服器類型

      IP版本親和模式僅支援伺服器類型和IP類型伺服器組,其他類型暫不支援。
    • 伺服器組名稱:輸入名稱sgp-alb-dualstack

    • VPC:選擇VPC1

    • 選擇後端協議:選擇HTTP

    • 展開高級配置,完成以下配置:

      • IP協議版本:選擇IPv4/v6雙棧。選擇後支援同時添加IPv4IPv6後端伺服器。

      • IP版本親和模式:選擇親和模式。開啟後,IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端。

  3. 單擊伺服器組建立成功彈窗中的添加後端伺服器。在IP地址列為ecs-ipv4選擇IPv4地址,為ecs-ipv6選擇IPv6地址。選中兩台執行個體,單擊下一步

  4. 配置連接埠和權重步驟中,將兩台伺服器的通信埠均設定為80,單擊確定完成添加。

4. 建立監聽

  1. ALB控制台,單擊目標執行個體ID進入執行個體詳情頁。在監聽頁簽單擊建立監聽

  2. 配置監聽步驟,選擇監聽協議 HTTP 監聽連接埠 填寫80 ,單擊下一步

    本文以HTTP監聽為例示範親和轉寄能力,生產環境中建議使用HTTPS監聽
  3. 選擇伺服器組步驟,選擇伺服器組sgp-alb-dualstack,單擊下一步

  4. 組態稽核步驟確認配置,單擊提交

5. 設定網域名稱解析

將自有網域名稱通過CNAME解析指向ALB執行個體的DNS名稱,用戶端通過自有網域名稱訪問ALB。

本文以阿里雲Alibaba Cloud DNS為例,對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台

  1. ALB控制台,複製目標執行個體的DNS 名稱

  2. 登入網域名稱解析控制台,在目標網域名稱的操作列單擊解析设置。在解析设置頁面單擊添加记录

  3. 參考以下資訊添加CNAME記錄,單擊确定

    • 记录类型:選擇CNAME

    • 主机记录:輸入欄位名首碼如test。假設使用者自有根網域名稱為example.com,則訪問ALB的網域名稱為test.example.com

    • 解析请求来源TTL时间:保持預設。

    • 记录值:輸入ALB執行個體的DNS名稱。

  4. 在彈出的解析变更确认對話方塊確認解析資訊,單擊確定

6. 驗證親和轉寄

使用者通過自有網域名稱訪問具備IPv6公網能力的雙棧ALB執行個體時,DNS伺服器將根據用戶端的查詢類型返回A記錄(IPv4地址)或AAAA記錄(IPv6地址)。

測試IPv4請求

curl -4 http://test.example.com

多次請求,返回結果應均為Hello from IPv4 backend,表明IPv4請求被轉寄至IPv4後端ecs-ipv4

測試IPv6請求

curl -6 http://test.example.com

多次請求,返回結果應均為Hello from IPv6 backend,表明IPv6請求被轉寄至IPv6後端ecs-ipv6

驗證親和隔離

  1. 停止ecs-ipv4Nginx服務:sudo systemctl stop nginx

  2. 再次測試IPv4請求。請求將失敗,不會被轉寄至IPv6後端ecs-ipv6

  3. 恢複ecs-ipv4服務:sudo systemctl start nginx。IPv4請求恢複正常。

更多資訊

計費說明

  • ALB執行個體:ALB支援隨用隨付(後付費)和資源套件(預付費)兩種付費方式,詳情參考ALB計費規則

  • ECS執行個體:詳見ECS計費概述。若出於測試目的建立ECS,建議建立低規格的隨用隨付執行個體並及時釋放。

  • 網域名稱和DNS解析費用:除了需要支付網域名稱供應商的網域名稱費用外,在阿里雲配置DNS解析需要支付公網權威解析費用

  • 公網網路費用:需要為ALB執行個體綁定的公網IP和執行個體所在VPCIPv6公網頻寬支付費用。

ALB雙棧支援的地區

地區

地區

中國

華東1(杭州)、華東2(上海)、華南1(深圳)、華南2(河源)、西南1(成都)、華北1(青島)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、中國香港、華南3(廣州)

亞太地區

新加坡、馬來西亞(吉隆坡)、日本(東京)、印尼(雅加達)、韓國(首爾)、菲律賓(馬尼拉)、泰國(曼穀)

歐美地區

英國(倫敦)、德國(法蘭克福)、美國(維吉尼亞)、美國(矽谷)、墨西哥

中東

沙特(利雅得)- 夥伴營運

應用於生產環境

  • 高可用部署:後端伺服器應部署在多個可用性區域,IPv4IPv6後端均需保證冗餘,避免單點故障。

  • 健全狀態檢查配置:根據業務特點調整健全狀態檢查間隔、逾時時間和閾值,確保故障伺服器能被及時摘除。

常見問題

開啟親和模式後,IPv4請求會轉寄到IPv6後端嗎?

不會。開啟親和模式後,IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端,不會跨協議轉寄。

如果伺服器組內只有IPv4後端,IPv6請求會如何處理?

未開啟親和模式時,ALB支援將IPv6請求轉換成IPv4並發給後端;開啟親和模式後,IPv6請求將無法正常轉寄。該情境下請確保ALB伺服器組同時包含健康的IPv4IPv6後端。

已建立的伺服器組可以修改IP協議版本嗎?

不支援。伺服器組的IP協議版本IPv4IPv4/v6雙棧)建立後不可修改,如需變更需刪除伺服器組後重新建立。

已建立的伺服器組可以修改IP版本親和模式嗎?

可以。可在伺服器組控制台單擊目標雙棧伺服器組操作 列的編輯基本資料 進行修改。

僅建立時IP協議版本選擇為IPv4/v6雙棧的伺服器組支援修改IP版本親和模式

雙棧伺服器組可以關聯到IPv4類型的ALB執行個體嗎?

不可以。雙棧伺服器組僅支援關聯至雙棧ALB執行個體的監聽。