NLB雙棧執行個體支援IP版本親和模式,開啟後可將IPv4請求轉寄至IPv4後端伺服器、IPv6請求轉寄至IPv6後端伺服器,實現按IP協議版本的流量調度,簡化網路架構。
方案架構
問題情境
在業務從 IPv4 向 IPv6 遷移的過程中,IPv4 與 IPv6 服務常常需要共存。當目標伺服器組中同時包含 IPv4 和 IPv6 地址的後端伺服器時,NLB 預設不區分用戶端請求的 IP 協議版本,而是僅依據調度演算法(如輪詢或最小串連數)向後端轉寄流量。
這可能導致跨協議轉寄現象——例如,來自 IPv6 用戶端的請求被轉寄到僅支援 IPv4 的後端伺服器,或反之。此類協議不匹配會引發以下問題:
後端伺服器無法擷取真實用戶端IP,影響基於源IP的地區分析和許可權管控。
為擷取真實源IP,需額外部署Nginx等代理層並開啟Proxy Protocol,增加營運成本。
解決方案
NLB伺服器組支援IP版本親和模式,開啟後實現4to4/6to6的親和轉寄。
後端可直接擷取對應協議的用戶端真實IP,無需額外代理層。當某一協議的所有後端健全狀態檢查失敗時,該協議的請求在同協議後端內儘力轉寄,不會跨協議轉寄。
適用範圍
操作步驟
在開始操作前,請確保已在華東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. 建立雙棧NLB執行個體
登入NLB控制台,選擇華東2(上海)地區,單擊建立網路型負載平衡。
完成以下配置,其他選項保持預設,單擊立即建立:
執行個體網路類型:選擇公網。
VPC:選擇
VPC1。可用性區域:選擇可用性區域E和可用性區域G及對應交換器
VSW1和VSW2,並自動分配公網IP。協議版本:選擇雙棧。
建立完成後,單擊執行個體ID進入執行個體詳情頁。在基本資料地區找到網路類型,單擊IPv6:私網右側的變更網路類型。在彈出的視窗單擊確定變更,並確認變更成功。
3. 建立雙棧伺服器組並開啟親和模式
在伺服器組控制台,單擊建立伺服器組。
完成以下配置,單擊建立:
伺服器群組類型:選擇伺服器類型。
伺服器組名稱:輸入名稱
sgp-dualstack。VPC:選擇
VPC1。選擇後端協議:選擇TCP。
IP協議版本:選擇IPv4/v6雙棧。選擇後支援同時添加IPv4和IPv6後端伺服器。
IP版本親和模式:選擇親和模式。開啟後,IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端。
單擊伺服器組建立成功彈窗中的添加後端伺服器。在IP地址列為
ecs-ipv4選擇IPv4地址,為ecs-ipv6選擇IPv6地址。選中兩台執行個體,單擊下一步。大量新增IPv6後端時,可單擊IP地址列表頭旁的設定表徵圖,選擇首選IPv6,系統將優先選中伺服器的IPv6地址。
在配置連接埠和權重步驟中,將兩台伺服器的通信埠均設定為
80,單擊確定完成添加。
4. 建立監聽
在NLB控制台,單擊目標執行個體ID進入執行個體詳情頁。在監聽頁簽單擊建立監聽。
在配置監聽步驟,選擇監聽協議為TCP,監聽連接埠填寫
80,單擊下一步。在選擇伺服器組步驟,選擇伺服器組
sgp-dualstack,單擊下一步。在組態稽核步驟確認配置,單擊提交。
5. 設定網域名稱解析
將自有網域名稱通過CNAME解析指向NLB執行個體的DNS名稱,用戶端通過自有網域名稱訪問NLB。
本文以阿里雲Alibaba Cloud DNS為例,對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台。
6. 驗證親和轉寄
使用者通過自有網域名稱訪問具備IPv6公網能力的雙棧NLB執行個體時,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請求恢複正常。
更多資訊
計費說明
NLB雙棧支援的地區
地區 | 地區 |
中國 | 華東1(杭州)、華北2(北京)、華南1(深圳)、華東2(上海)、華北1(青島)、華北3(張家口)、西南1(成都)、華南3(廣州)、中國香港、華南2(河源)、華北6(烏蘭察布) |
亞太地區 | 泰國(曼穀)、菲律賓(馬尼拉)、新加坡、日本(東京)、韓國(首爾)、 馬來西亞(吉隆坡)、印尼(雅加達) |
歐美地區 | 德國(法蘭克福)、英國(倫敦)、美國(維吉尼亞)、美國(矽谷)、墨西哥 |
中東 | 沙特(利雅得) |
應用於生產環境
高可用部署:後端伺服器應部署在多個可用性區域,IPv4和IPv6後端均需保證冗餘,避免單點故障。
健全狀態檢查配置:根據業務特點調整健全狀態檢查間隔、逾時時間和閾值,確保故障伺服器能被及時摘除。
常見問題
開啟親和模式後,IPv4請求會轉寄到IPv6後端嗎?
不會。開啟親和模式後,IPv4請求僅轉寄至IPv4後端,IPv6請求僅轉寄至IPv6後端,不會跨協議轉寄。
如果伺服器組內只有IPv4後端,IPv6請求會如何處理?
未開啟親和模式時,NLB支援將IPv6請求轉換成IPv4並發給後端;開啟親和模式後,IPv6請求將無法正常轉寄,該情境下請確保您的NLB同時包含健康的IPv4和IPv6後端。
已建立的伺服器組可以修改IP協議版本嗎?
不支援。伺服器組的IP協議版本(IPv4或IPv4/v6雙棧)建立後不可修改,如需變更需刪除伺服器組後重新建立。
已建立的伺服器組可以修改IP版本親和模式嗎?
可以。可在伺服器組控制台單擊目標雙棧伺服器組操作列的編輯基本資料進行修改。
雙棧伺服器組可以關聯到IPv4類型的NLB執行個體嗎?
不可以。雙棧伺服器組僅支援關聯至雙棧NLB執行個體的監聽。