全部產品
Search
文件中心

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

更新時間:Nov 23, 2024

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

情境樣本

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

使用限制

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

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

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

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

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

前提條件

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

  • 您已在華東2(上海)地區的可用性區域E和可用性區域G分別建立了一個交換器,並將可用性區域E的交換器名稱修改為交換器1,將可用性區域G的交換器名稱修改為交換器2,且交換器1和交換器2均已開通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 3.2104 LTS 64位

    ECS02

    華東2(上海)

    VPC1

    可用性區域G的交換器2

    IPv6

    說明

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

    Alibaba Cloud Linux 3.2104 LTS 64位

  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地址。具體操作請參見IPv6通訊

    說明

    如果您的ECS02執行個體鏡像為Alibaba Cloud Linux 3.2104 LTS 64,並且在建立時已在IPv6處選中免費分配IPv6地址,可忽略此步驟。

    1. 遠程登入VPC中的ECS02執行個體。

    2. 配置IPv6地址。

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

      如下圖所示,表示已成功配置IPv6地址,您可忽略此步驟。

      image

      1. 如果未返回inet6相關內容,表示執行個體未開啟IPv6服務,請先開啟IPv6服務

      2. 如果返回inet6相關內容,表示ECS02執行個體已成功開啟IPv6服務並識別到IPv6地址,請繼續配置IPv6地址

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

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

  1. 登入ECS管理主控台

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

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

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

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

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

    參數

    描述

    授權策略

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

    優先順序

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

    本文保持預設值1

    協議類型

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

    連接埠範圍

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

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

    授權對象

    輸入授權的IPv6位址區段。

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

    說明

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

步驟三:建立NLB執行個體

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

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

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

    配置參考資訊

    配置

    說明

    地區

    選擇執行個體所屬的地區。

    執行個體網路類型

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

    說明

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

    VPC

    選擇執行個體所屬的VPC。

    說明

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

    可用性區域

    至少選擇2個可用性區域。本文選擇上海 可用性區域E及該可用性區域下的交換器1,上海 可用性區域G及該可用性區域下的交換器2。

    協議版本

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

    執行個體名稱

    自訂執行個體名稱。

    資源群組

    選擇所屬的資源群組。

    服務關聯角色

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

  4. 建立完公網雙棧NLB執行個體,系統預設提供私網IPv6地址,執行以下步驟,將私網IPv6地址變更為公網IPv6地址。

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

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

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

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

步驟四:建立伺服器組

  1. 在頂部功能表列,選擇NLB執行個體所屬的地區。

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

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

    關鍵配置資訊可參考下表,其他未列出的配置項使用預設值。關於參數的更多資訊,請參見建立伺服器組

    參數

    說明

    伺服器群組類型

    伺服器組掛載的後端伺服器類型。本文選擇伺服器類型

    伺服器組名稱

    自訂填寫伺服器組名稱。

    VPC

    伺服器組所屬VPC。

    說明

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

    選擇後端協議

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

    選擇調度演算法

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

    IPv6掛載

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

    健全狀態檢查

    開啟或關閉健全狀態檢查。本文保持預設配置。

  4. 單擊伺服器組執行個體右側操作列的編輯後端伺服器,然後單擊添加後端伺服器

  5. 添加後端伺服器面板,選擇伺服器類型Elastic Compute Service/彈性網卡ENI,選擇已建立的ECS01和ECS02執行個體,在IP地址列選擇ECS01執行個體的IPv4地址,選擇ECS02執行個體的IPv6地址,然後單擊下一步

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

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

步驟五:配置監聽

  1. 在左側導覽列,選擇網路型負載均衡 NLB > 執行個體

  2. 執行個體頁面,找到目標執行個體,在操作列單擊建立監聽

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

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

    參數

    描述

    選擇監聽協議

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

    監聽連接埠

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

    監聽名稱

    輸入自訂監聽名稱。

    高級配置

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

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

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

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

步驟六:設定網域名稱解析

實際業務情境中,建議您使用自有網域名稱,通過CNAME解析的方式將自有網域名稱指向NLB執行個體網域名稱。

  1. 在左側導覽列,選擇網路型負載均衡 NLB > 執行個體

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

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

    說明

    對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台,才可以進行網域名稱解析設定。具體操作,請參見網域名稱管理。如果您是阿里雲註冊的網域名稱,請直接執行以下步驟。

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

    2. 權威網域名稱解析頁面,找到目標網域名稱,在操作列單擊解析設定

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

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

      配置

      說明

      記錄類型

      在下拉式清單中選擇CNAME

      主機記錄

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

      說明

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

      解析請求來源

      選擇預設。

      記錄值

      輸入欄位名對應的CNAME地址,此處為NLB執行個體的DNS名稱。

      TTL

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

步驟七:驗證結果

  1. 測試NLB可用性:

    說明

    測試可用性時,請確保您的用戶端已支援IPv6功能。

    1. 以任意一台可以訪問IPv6服務的Linux用戶端為例。如果未安裝telnet,以CentOS系統為例可以參考執行yum install -y telnet安裝telnet。

    2. 執行telnet 網域名稱 連接埠命令,收到下圖回複報文Connected to nlb-...,則表示NLB可以將請求轉寄至後端伺服器。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'

      通過瀏覽器訪問網域名稱,例如http://網域名稱,可以看到如下圖所示,表示NLB可以將請求轉寄至後端伺服器。

      image

  2. (可選)類比故障:

    1. 在ECS01中執行systemctl stop nginx.service停用應用。

    2. 等待幾分鐘後,用戶端再次執行telnet 網域名稱 連接埠命令,仍然收到下圖回複報文Connected to nlb-...

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'

      通過瀏覽器訪問網域名稱,例如http://網域名稱,可以看到如下圖所示,表示NLB可以將請求轉寄至後端伺服器。

      image

    3. 在ECS01中執行systemctl start nginx.service重新啟動應用,在ECS02中執行systemctl stop nginx.service停用應用。

    4. 等待幾分鐘後,在用戶端中再次執行telnet 網域名稱 連接埠命令,仍然收到下圖回複報文Connected to nlb-...

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'

      通過瀏覽器訪問網域名稱,例如http://網域名稱,可以看到如下圖所示,表示NLB可以將請求轉寄至後端伺服器。

      image

    5. 如上表明後端單台伺服器故障不影響NLB可用性。

釋放資源

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

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

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

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

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

  2. 刪除網域名稱解析記錄;

    刪除網域名稱解析記錄,請參見刪除網域名稱解析記錄

  3. 清理NLB資源:

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

    2. 登入網路型負載平衡NLB控制台,頂部選擇執行個體所屬地區,在伺服器組菜單單擊伺服器組右側的image.png,彈出的視窗中選擇刪除並確認。

  4. 清理VPC資源:

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

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

相關文檔