配置IP版本親和轉寄
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後端,避免跨協議轉寄導致的業務異常。當某一協議的所有後端健全狀態檢查失敗時,該協議的請求在同協議後端內儘力轉寄,不會跨協議轉寄。
適用範圍
操作步驟
在開始操作前,請確保已在華東2(上海)地區建立一個專用網路VPC1,分別在可用性區域E和可用性區域G建立交換器VSW1和VSW2,且交換器已開啟IPv6。
1. 建立ECS執行個體並部署服務
-
參考下表配置,建立兩台ECS執行個體。
執行個體名稱
地區
VPC
交換器
IP版本
鏡像
ecs-ipv4
華東2(上海)
VPC1VSW1IPv4
Alibaba Cloud Linux 3.2104 LTS 64位
ecs-ipv6
VSW2IPv6
購買ECS執行個體時,在網路與安全性群組配置項下勾選免費分配 IPv6 地址。
-
遠端連線
ecs-ipv4和ecs-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.htmlecs-ipv6
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html -
在兩台ECS執行個體所屬安全性群組添加入方向規則,允許存取請求流量。請確保規則具備足夠高的優先順序。
執行個體名稱
授權策略
協議
訪問來源
訪問目的(本執行個體)
ecs-ipv4
允許
自訂TCP
選擇
IPv4後,選擇本VPC網段。選擇
連接埠後,選擇HTTP(80)。ecs-ipv6
選擇
IPv6後,選擇本VPC網段。相關操作,可參考自訂購買執行個體、ECS遠端連線操作指南、配置安全性群組規則。
2. 建立雙棧ALB執行個體
-
登入ALB控制台,選擇華東2(上海)地區,單擊建立應用型負載平衡。
-
完成以下配置,其他選項保持預設,單擊立即購買:
-
執行個體網路類型:選擇公網。
-
VPC:選擇
VPC1。 -
可用性區域:選擇可用性區域E和可用性區域G及對應交換器
VSW1和VSW2,並自動分配公網IP。 -
協議版本:選擇雙棧。
-
功能版本(執行個體費):選擇標準版。
IP版本親和模式僅支援標準版和WAF增強版ALB執行個體,基礎版和擴充版暫不支援。
-
-
建立完成後,單擊執行個體ID進入執行個體詳情頁。在基本資料地區找到網路類型,單擊IPv6:私網右側的變更網路類型。在彈出的視窗單擊確定變更,並確認變更成功。
3. 建立雙棧伺服器組並開啟親和模式
-
在伺服器組控制台,單擊建立伺服器組。
-
完成以下配置,單擊建立:
-
伺服器群組類型 :選擇伺服器類型 。
IP版本親和模式僅支援伺服器類型和IP類型伺服器組,其他類型暫不支援。
-
伺服器組名稱:輸入名稱
sgp-alb-dualstack。 -
VPC:選擇
VPC1。 -
選擇後端協議:選擇HTTP。
-
展開高級配置,完成以下配置:
-
IP協議版本:選擇IPv4/v6雙棧。選擇後支援同時添加IPv4和IPv6後端伺服器。
-
IP版本親和模式:選擇親和模式。開啟後,IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端。
-
-
-
單擊伺服器組建立成功彈窗中的添加後端伺服器。在IP地址列為
ecs-ipv4選擇IPv4地址,為ecs-ipv6選擇IPv6地址。選中兩台執行個體,單擊下一步。 -
在配置連接埠和權重步驟中,將兩台伺服器的通信埠均設定為
80,單擊確定完成添加。
4. 建立監聽
5. 設定網域名稱解析
將自有網域名稱通過CNAME解析指向ALB執行個體的DNS名稱,用戶端通過自有網域名稱訪問ALB。
本文以阿里雲Alibaba Cloud DNS為例,對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台。
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。
驗證親和隔離
-
停止
ecs-ipv4的Nginx服務:sudo systemctl stop nginx。 -
再次測試IPv4請求。請求將失敗,不會被轉寄至IPv6後端
ecs-ipv6。 -
恢複
ecs-ipv4服務:sudo systemctl start nginx。IPv4請求恢複正常。
更多資訊
計費說明
ALB雙棧支援的地區
地區 | 地區 |
中國 | 華東1(杭州)、華東2(上海)、華南1(深圳)、華南2(河源)、西南1(成都)、華北1(青島)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、中國香港、華南3(廣州) |
亞太地區 | 新加坡、馬來西亞(吉隆坡)、日本(東京)、印尼(雅加達)、韓國(首爾)、菲律賓(馬尼拉)、泰國(曼穀) |
歐美地區 | 英國(倫敦)、德國(法蘭克福)、美國(維吉尼亞)、美國(矽谷)、墨西哥 |
中東 | 沙特(利雅得)- 夥伴營運 |
應用於生產環境
-
高可用部署:後端伺服器應部署在多個可用性區域,IPv4和IPv6後端均需保證冗餘,避免單點故障。
-
健全狀態檢查配置:根據業務特點調整健全狀態檢查間隔、逾時時間和閾值,確保故障伺服器能被及時摘除。
常見問題
開啟親和模式後,IPv4請求會轉寄到IPv6後端嗎?
不會。開啟親和模式後,IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端,不會跨協議轉寄。
如果伺服器組內只有IPv4後端,IPv6請求會如何處理?
未開啟親和模式時,ALB支援將IPv6請求轉換成IPv4並發給後端;開啟親和模式後,IPv6請求將無法正常轉寄。該情境下請確保ALB伺服器組同時包含健康的IPv4和IPv6後端。
已建立的伺服器組可以修改IP協議版本嗎?
不支援。伺服器組的IP協議版本(IPv4或IPv4/v6雙棧)建立後不可修改,如需變更需刪除伺服器組後重新建立。
已建立的伺服器組可以修改IP版本親和模式嗎?
可以。可在伺服器組控制台單擊目標雙棧伺服器組操作 列的編輯基本資料 進行修改。
僅建立時IP協議版本選擇為IPv4/v6雙棧的伺服器組支援修改IP版本親和模式。
雙棧伺服器組可以關聯到IPv4類型的ALB執行個體嗎?
不可以。雙棧伺服器組僅支援關聯至雙棧ALB執行個體的監聽。