全部產品
Search
文件中心

Server Load Balancer:ALB快速實現IPv6服務的負載平衡

更新時間:Jun 19, 2024

應用型負載平衡ALB(Application Load Balancer)支援轉寄IPv6網路請求,本文指導您如何為雙棧ALB執行個體開啟IPv6掛載,即ALB執行個體同時支援掛載IPv4和IPv6的Elastic Compute Service(Elastic Compute Service),使IPv6網路的用戶端請求通過ALB可以訪問部署在後端的IPv4和IPv6服務。

情境樣本

本文以下圖情境為例。某公司希望ALB可以轉寄來自IPv6用戶端的請求,以實現IPv6用戶端使用公網正常訪問VPC中的IPv4和IPv6服務。該公司需要建立具有IPv4和IPv6地址的ECS,同時需要在VPC中建立雙棧ALB執行個體並建立具有IPv6掛載功能的伺服器組。完成上述配置後,IPv6用戶端的請求即可通過ALB訪問部署在後端ECS上的IPv4和IPv6服務。

架構圖

使用限制

  • 雙棧支援的地區,請參見ALB雙棧支援的地區

  • 使用雙棧功能,需要開通VPC可用性區域中交換器的IPv6功能。

  • 雙棧ALB執行個體支援將IPv4和IPv6的用戶端流量轉寄至IPv4、IPv6的後端服務。

    • 雙棧ALB執行個體將IPv6的用戶端流量轉寄至IPv4的後端服務時,後端服務支援伺服器類型(ECS、ENI、ECI)、IP類型,不支援Function Compute類型。

    • 雙棧ALB執行個體將IPv6的用戶端流量轉寄至IPv6的後端服務時,後端服務支援伺服器類型(ECS、ENI、ECI),不支援IP類型、Function Compute類型。

  • 不支援已有的IPv4執行個體升級為雙棧執行個體,僅支援建立雙棧執行個體。

  • IPv4類型的ALB執行個體在建立監聽時,無法添加開啟了IPv6掛載功能的伺服器組。

前提條件

  • 您已在華東2(上海)地區建立了一個VPC,並將該VPC名稱修改為VPC1,且該VPC已開通了IPv6功能。開通IPv6功能後,系統會為您預設建立一個IPv6網關,您需要確保該IPv6網關已開通公網頻寬。

  • 您已在華東2(上海)地區的可用性區域E和可用性區域G分別建立了一個交換器,並將可用性區域E的交換器名稱修改為交換器1,將可用性區域G的交換器名稱修改為交換器2,且交換器2已開通IPv6功能。具體操作,請參見建立IPv4/IPv6雙棧交換器

配置步驟

配置流程

步驟一:建立並配置ECS執行個體

  1. 登入專用網路管理主控台
  2. 在左側導覽列,單擊交換器

  3. 選擇交換器的地區,本文選擇華東2(上海)

  4. 交換器頁面,找到目標交換器,然後在操作列選擇添加雲產品 > ECS執行個體

  5. Elastic Compute Service購買頁面的自訂購買頁簽下,建立2台ECS執行個體,並將IPv4 ECS修改執行個體名稱為ECS01,將IPv6 ECS修改執行個體名稱為ECS02,兩台ECS執行個體綁定的安全性群組均需要允許存取80連接埠。具體操作,請參見自訂購買執行個體

    單擊查看本文ECS執行個體的配置

    ECS執行個體名稱

    地區

    VPC名稱

    交換器

    IP版本

    鏡像

    ECS01

    華東2(上海)

    VPC1

    可用性區域E的交換器1

    IPv4

    Alibaba Cloud Linux

    ECS02

    華東2(上海)

    VPC1

    可用性區域G的交換器2

    IPv6

    說明

    建立具有IPv6地址的執行個體時,需在IPv6處選中免費分配IPv6地址

    Alibaba Cloud Linux

  6. 遠程登入ECS01和ECS02執行個體,具體操作,請參見ECS遠端連線操作指南

  7. 在ECS01中執行如下命令,部署Nginx服務。

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! this is ipv4 rs." > index.html
    
  8. 在ECS02中執行如下命令,部署Nginx服務。

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! this is ipv6 rs." > index.html
    
  9. 配置ECS02執行個體的IPv6地址。

    說明

    如果您的ECS02執行個體建立時已在IPv6處選中免費分配IPv6地址,可忽略此步驟。

    本文以手動設定ECS02的IPv6地址為例進行配置說明。關於配置IPv6地址的更多操作,請參見為Linux執行個體配置 IPv6 地址

    1. 執行vi /etc/sysconfig/network-scripts/ifcfg-eth0命令開啟網卡設定檔,eth0為網卡標識符,您需要修改成實際的標識符。在檔案中根據實際資訊添加以下配置:

      DHCPV6C=yes
      IPV6INIT=yes
    2. 修改完成後按Esc鍵,並輸入:wq後按下斷行符號鍵,儲存並退出。

    3. 重啟執行個體。

      reboot
    4. 重啟完成後,檢查ECS02執行個體是否已開啟IPv6服務。

    執行ip addr | grep inet6或者ifconfig | grep inet6命令:

    • 如果返回inet6相關內容,表示執行個體已成功開啟IPv6服務。

      • 如果未返回inet6相關內容,表示執行個體未開啟IPv6服務。

    下圖表示ECS02執行個體已開啟IPv6服務。ipv6

步驟二:ECS02配置IPv6安全性群組規則

您需要為ECS02執行個體配置IPv6安全性群組規則,使安全性群組入方向能夠允許接受IPv6用戶端發送的請求。

  1. 登入ECS管理主控台

  2. 在左側導覽列,選擇網路與安全 > 安全性群組

  3. 在頂部功能表列處,選擇目標安全性群組的地區。本文選擇華東2(上海)

  4. 安全性群組頁面,找到目標安全性群組,在操作列單擊管理規則

  5. 單擊安全性群組詳情頁面,然後在訪問規則地區,單擊入方向頁簽。

  6. 單擊手動添加,在規則列表中根據以下資訊配置IPv6安全性群組規則,然後在操作列單擊儲存

    參數

    描述

    授權策略

    設定是否允許安全性群組的授權策略。本文選擇允許

    優先順序

    設定安全性群組的優先順序。優先順序的數值越小,優先順序越高。取值範圍:1~100

    本文保持預設值1

    協議類型

    允許入方向允許存取的安全性群組的協議類型。本文選擇全部ICMP(IPv6)

    連接埠範圍

    允許入方向允許存取的安全性群組的連接埠範圍。

    協議類型選擇全部ICMP(IPv6)時,連接埠範圍的目的連接埠只能設定為-1/-1且不能修改。

    授權對象

    輸入授權的IPv6位址區段。

    本文輸入::/0,表示授權所有IPv6地址。

    說明

    本文配置的授權對象僅為樣本,您可以根據需要允許存取指定的IPv6網段。

    描述

    自訂描述資訊。

步驟三:建立ALB執行個體

  1. 登入應用型負載平衡ALB控制台
  2. 執行個體頁面,單擊建立應用型負載平衡

  3. 在購買頁面,完成以下配置,然後單擊立即購買並根據控制台提示完成執行個體開通。

    此處僅列出和本文強相關的配置項,其他未列出的配置項使用預設值。關於參數的更多資訊,請參見建立執行個體

    參數

    描述

    地區

    選擇執行個體所屬的地區。本文選擇華東2(上海)

    執行個體網路類型

    選擇執行個體網路類型,系統會根據您的選擇分配私網或公網服務地址。本文選擇公網

    說明

    執行個體網路類型選擇公網類型只作用於IPv4,IPv6預設是私網類型。本文使用IPv6的公網類型,需執行步驟4變更IPv6的網路類型為公網類型。

    VPC

    選擇執行個體所屬的VPC。

    說明

    請確保該VPC開啟了IPv6功能。

    可用性區域

    1. 選擇至少2個可用性區域。本文選擇上海 可用性區域E上海 可用性區域G

    2. 分別在所選可用性區域內選擇交換器。本文選擇可用性區域E下的交換器1和可用性區域G下的交換器2。

    IP模式

    選擇執行個體的IP地址模式。本文選擇固定IP

    協議版本

    選擇執行個體的IP協議版本。本文選擇雙棧

    功能版本(執行個體費)

    選擇執行個體的功能版本。本文選擇標準版

    執行個體名稱

    輸入自訂執行個體名稱。

    服務關聯角色

    首次建立應用型Server Load Balancer執行個體時,需要單擊建立服務關聯角色,建立一個名稱為AliyunServiceRoleForAlb的服務關聯角色。系統會為該角色添加名稱為AliyunServiceRolePolicyForAlb的權限原則,授予ALB擁有訪問其他雲產品執行個體的許可權。更多操作,請參見應用型負載平衡ALB系統權限原則參考

  4. 建立完公網雙棧ALB執行個體後,本文需要使用公網IPv6地址,請執行以下步驟將ALB執行個體的IPv6地址變更為公網地址。更多資訊,請參見協議版本

    1. 返回執行個體頁面,找到目標ALB執行個體,單擊執行個體ID。

    2. 實例詳情頁簽的基本資料地區,找到網路類型,然後在IPv6:私網的右側單擊變更網路類型

    3. 變更網路類型對話方塊中單擊確定變更

      變更成功後,您可以看到IPv6的網路類型變成了公網。

步驟四:建立伺服器組

  1. 在左側導覽列,選擇應用型負載平衡ALB > 伺服器組

  2. 伺服器組頁面,單擊建立伺服器組

  3. 建立伺服器組對話方塊中,完成以下配置,然後單擊建立

    此處僅列出和本文強相關的配置項,其他未列出的配置項使用預設值。關於參數的更多資訊,請參見建立伺服器組

    參數

    描述

    伺服器群組類型

    選擇一種伺服器群組類型。本文選擇伺服器類型

    伺服器組名稱

    輸入自訂伺服器組名稱。

    VPC

    從VPC下拉式清單中選擇已建立的VPC,只有該VPC下的伺服器可以加入到該伺服器組。

    說明

    確保您選擇的VPC開啟了IPv6功能,且與建立ALB執行個體時選擇的VPC相同。

    選擇後端協議

    選擇一種後端協議。本文選擇HTTP

    選擇調度演算法

    選擇一種調度演算法。本文選擇加權輪詢

    IPv6掛載

    選擇是否開啟IPv6掛載功能。本文只支援選擇開啟IPv6掛載功能。

    會話保持

    開啟或關閉會話保持。本文保持預設值即不開啟會話保持。

    開啟健全狀態檢查

    開啟或關閉健全狀態檢查。本文開啟。

    健全狀態檢查配置

    開啟健全狀態檢查後,您可以單擊後面的編輯,展開進行更多配置。

  4. 伺服器組頁面,找到目標伺服器組,然後單擊目標伺服器組ID。

  5. 單擊後端伺服器頁簽,然後單擊新增後端伺服器

  6. 新增後端伺服器面板,選擇已建立的ECS01和ECS02執行個體,在IP地址列選擇ECS01執行個體的IPv4地址,選擇ECS02執行個體的IPv6地址,然後單擊下一步

  7. 配置連接埠和權重設定精靈,設定ECS01和ECS02執行個體的連接埠和權重,然後單擊確定

    本文ECS執行個體連接埠配置為80,權重為預設值100

步驟五:配置監聽

  1. 執行個體頁面,找到目標執行個體,單擊執行個體ID。

  2. 單擊監聽頁簽,然後單擊建立監聽

  3. 配置監聽設定精靈,完成以下配置,然後單擊下一步

    此處僅列出和本文強相關的配置項,其他未列出的配置項使用預設值。關於配置監聽的更多操作,請參見添加HTTP監聽

    參數

    描述

    選擇監聽協議

    選擇監聽的協議類型。本文選擇HTTP

    監聽連接埠

    用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠。本文輸入80

    監聽名稱

    輸入自訂監聽名稱。

    高級配置

    本文保持預設,可單擊修改進行設定。

  4. 選擇伺服器組設定精靈,選擇伺服器類型伺服器類型下的目標伺服器組,查看後端伺服器資訊,然後單擊下一步

  5. 設定審核設定精靈,確認配置資訊,然後單擊提交

  6. 單擊知道了返回監聽頁簽,查看目標監聽的健全狀態檢查狀態列為正常時,表示後端伺服器ECS01和ECS02執行個體可以正常處理ALB執行個體轉寄的請求。

(可選)步驟六:設定網域名稱解析

  1. 在左側導覽列,選擇應用型負載平衡 ALB > 執行個體

  2. 執行個體頁面,複製已建立的ALB執行個體的DNS名稱。

  3. 執行以下步驟添加CNAME解析記錄。

    1. 登入網域名稱解析控制台

    2. 網域名稱解析頁面單擊添加網域名稱

    3. 添加網域名稱對話方塊中輸入您的主機網域名稱,然後單擊確認

      重要

      您的主機網域名稱需已完成TXT記錄驗證。

    4. 在目標網域名稱的操作列單擊解析設定

    5. 解析設定頁面,單擊添加記錄

    6. 添加記錄面板,配置以下資訊完成CNAME解析配置,然後單擊確認

      配置

      說明

      記錄類型

      在下拉式清單中選擇CNAME

      主機記錄

      您的網域名稱的首碼。本文輸入@

      說明

      建立網域名稱為根網域名稱時,主機記錄為@

      解析請求來源

      選擇預設。

      記錄值

      輸入欄位名對應的CNAME地址,即您複製的ALB執行個體的DNS名稱。

      TTL

      全稱Time To Live,表示DNS記錄在DNS伺服器上的緩衝時間,本文使用預設值。

步驟七:測試連通性

  1. 擷取訪問地址:

    1. 如果您設定了網域名稱解析,使用自有網域名稱通過CNAME網域名稱解析的方式解析到ALB執行個體的公網服務網域名稱,則訪問地址為您的自有網域名稱。

    2. 如果您未使用自有網域名稱,可登入應用型負載平衡ALB控制台,頂部選擇執行個體所屬地區,在目標ALB執行個體DNS名稱列複製ALB執行個體的公網服務網域名稱,作為訪問地址。

  2. 您可以通過以下操作測試IPv6用戶端的終端與VPC中的ECS執行個體之間的連通性。

    說明

    測試連通性時,請確保您的用戶端已支援IPv6功能,您可以在瀏覽器地址欄輸入網址http://test-ipv6.com/測試您的用戶端是否支援IPv6功能。

    以任意一台可以訪問IPv6用戶端的終端為例,測試IPv6用戶端與VPC中ECS01和ECS02的連通性。

    1. 開啟終端的cmd視窗。

    2. 多次執行以下命令,測試IPv6用戶端是否可以通過ALB以輪詢的方式訪問IPv4 ECS以及IPv6 ECS。

      curl -6 http://<ALB網域名稱> -v

      如果收到如下所示的回複報文,則表示IPv6用戶端可以訪問IPv4 ECS。6-4

      如果收到如下所示的回複報文,則表示IPv6用戶端可以訪問IPv6 ECS。6-6

完成上述操作後,表明IPv6用戶端可以通過ALB以輪詢的方式訪問VPC中部署的IPv4服務和IPv6服務。

釋放資源

  1. 清理ECS、安全性群組等資源:

    1. 刪除ECS01執行個體及其安全性群組:

      1. 登入Elastic Compute Service執行個體控制台,頂部選擇執行個體所屬地區,單擊ECS01執行個體右側的image.png,彈出的視窗中選擇釋放,立即釋放執行個體並確認。

      2. 登入Elastic Compute Service安全性群組控制台,頂部選擇執行個體所屬地區,勾選ECS01自訂安全性群組並單擊刪除,刪除安全性群組。

    2. 參照上述步驟,刪除ECS02執行個體及對應安全性群組資源。

  2. (可選)刪除網域名稱解析記錄:

    刪除網域名稱解析記錄,具體操作,請參見刪除網域名稱解析記錄

  3. 清理ALB資源:

    1. 登入應用型負載平衡ALB控制台頂部選擇執行個體所屬地區,單擊目標執行個體右側的image.png,彈出的視窗中選擇釋放並確認。

    2. 移除後端伺服器,具體操作,請參見移除後端伺服器

    3. 刪除伺服器組,具體操作,請參見刪除伺服器組

  4. 清理VPC資源:

    1. 登入Virtual Private Cloud控制台,頂部選擇執行個體所屬地區。

    2. 單擊執行個體右側刪除,刪除時勾選強制移除,完成VPC與交換器資源的刪除。