設定負載平衡包括設定 Kubernetes 負載平衡器服務或入口資源以及 NCP 複寫控制站。

透過設定負載平衡器類型的 Kubernetes 服務,您可以建立第 4 層負載平衡器。將從您設定的外部 IP 區塊為該服務配置 IP 位址。負載平衡器將在此 IP 位址和服務連接埠上公開。您可以使用負載平衡器定義中的 loadBalancerIP 規格指定 IP 集區的名稱或識別碼。負載平衡器服務的 IP 將從此 IP 集區配置。如果 loadBalancerIP 規格為空白,將從您設定的外部 IP 區塊配置 IP。

透過設定 Kubernetes 入口資源,您可以建立第 7 層負載平衡器。將從您設定的外部 IP 區塊為入口資源配置 IP 位址。負載平衡器將在此 IP 位址上公開。請注意,不支援負載平衡器類型的 Kubernetes 服務做為入口資源的後端。

備註:

無法為負載平衡器服務或入口資源指派特定的 IP 位址。在建立負載平衡器服務或入口資源時,您所指定的任何位址將遭到忽略。

若要在 NCP 中設定負載平衡,請在 ncp_rc.yml 檔案中:

  1. 設定 use_native_loadbalancer = True

  2. (選擇性) 將 pool_algorithm 設定為 'ROUND_ROBIN''LEAST_CONNECTION/IP_HASH'。預設為 'ROUND_ROBIN'

  3. (選用) 設定 service_size = 'SMALL''MEDIUM''LARGE'。預設為 'SMALL'

LEAST_CONNECTION/IP_HASH 演算法表示相同來源 IP 位址中的流量將傳送至相同的後端網繭。

小型 NSX-T 負載平衡器支援下列內容:

  • 10 部 NSX-T 虛擬伺服器。

  • 10 個 NSX-T 集區。

  • 30 個 NSX-T 集區成員。

  • 8 個用於負載平衡器服務的連接埠。

  • 由負載平衡器服務和入口資源定義的總共 10 個連接埠。

  • 由負載平衡器服務和入口資源引用的總共 30 個端點。

中型 NSX-T 負載平衡器支援下列內容:

  • 100 部 NSX-T 虛擬伺服器。

  • 100 個 NSX-T 集區。

  • 300 個 NSX-T 集區成員。

  • 98 個用於負載平衡器服務的連接埠。

  • 由負載平衡器服務和入口資源定義的總共 100 個連接埠。

  • 由負載平衡器服務和入口資源引用的總共 300 個端點。

大型 NSX-T 負載平衡器支援下列內容:

  • 1000 部 NSX-T 虛擬伺服器。

  • 1000 個 NSX-T 集區。

  • 3000 個 NSX-T 集區成員。

  • 998 個用於負載平衡器服務的連接埠。

  • 由負載平衡器服務和入口資源定義的總共 1000 個連接埠。

  • 由負載平衡器服務和入口資源引用的總共 3000 個端點。

建立負載平衡器後,無法透過更新組態檔來變更負載平衡器大小。可透過 UI 或 API 進行變更。

入口

  • NSX-T 將針對含 TLS 規格的入口和不含 TLS 規格的入口,分別建立一個第 7 層負載平衡器。

  • 所有入口將取得單一 IP 位址。

  • 不含 TLS 規格的入口將主控於 HTTP 虛擬伺服器 (連接埠 80) 之上。

  • 含 TLS 規格的入口將主控於 HTTPS 虛擬伺服器 (連接埠 443) 之上。負載平衡器將充當 SSL 伺服器,並且會終止用戶端 SSL 連線。

  • 密碼與入口的建立順序無關緊要。如果該密碼物件已存在,且有入口參考該密碼物件,則憑證將匯入 NSX-T 中。如果密碼已刪除或參考該密碼的最後一個入口已刪除,將會刪除與密碼對應的憑證。

  • 支援透過新增或移除 TLS 區段來修改入口。從入口規格中移除 tls 金鑰時,入口規則將從 HTTPS 虛擬伺服器 (連接埠 443) 傳輸至 HTTP 虛擬伺服器 (連接埠 80)。同樣地,將 tls 金鑰新增至入口規格時,入口規則將從 HTTP 虛擬伺服器 (連接埠 80) 傳輸至 HTTPS 虛擬伺服器 (連接埠 443)。

  • 如果單一叢集的入口定義中有重複規則,則僅套用第一個規則。

  • 每個叢集僅支援具有預設後端的單一入口。不符合任何入口規則的流量將會轉送至預設後端。

  • 如果有多個入口具有預設後端,則僅設定第一個入口。其他入口將標註為錯誤。

  • 支援使用規則運算式字元「.」進行萬用字元 URI 比對。「*」進行萬用字元 URI 比對。例如,路徑「/coffee/.*」與後面不跟字元或後跟一或多個字元的「/coffee/」(例如,「/coffee/」、「/coffee/a」、「/coffee/b」) 相符,但是與「/coffee」、「/coffeecup」或「/coffeecup/a」等不符。請注意,如果路徑包含「/*」,例如「/tea/*」,則與後面不跟字元或後跟一或多個字元的「/tea」(例如,「/tea」、「/tea/」、「/teacup」、「/teacup/」、「/tea/a」或「/teacup/b」) 相符。在此情況下,規則運算式特殊字元「*」同樣用做萬用字元。

    入口規格範例:

    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      rules:
      - http:
          paths:
          - path: /tea/*        #Matches /tea, /tea/, /teacup, /teacup/, /tea/a, /teacup/b, etc.
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee/.*    #Matches /coffee/, /coffee/a but NOT /coffee, /coffeecup, etc.
            backend:
              serviceName: coffee-svc
              servicePort: 80

  • 您可以透過新增註解至入口資源,來設定 HTTP URL 要求重寫。例如,

    kind: Ingress
    metadata:
      name: cafe-ingress
      annotations:
        ncp/rewrite_target: "/"
    spec:
      rules:
      - host: cafe.example.com
        http:
          paths:
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80

    路徑 /tea/coffee 將重寫為 /,然後再將 URL 傳送至後端服務。

第 7 層負載平衡器和網路原則

當流量從 NSX 負載平衡器虛擬伺服器轉送至網繭時,來源 IP 為第 1 層路由器上行連接埠的 IP 位址。此位址位於私人第 1 層傳送網路上,並且會導致以 CIDR 為基礎的網路原則禁止應允許的流量。若要避免此問題,必須設定網路原則,以便第 1 層路由器上行連接埠的 IP 位址是允許的 CIDR 區塊的一部分。此內部 IP 位址將做為 status.loadbalancer.ingress.ip 欄位中的入口規格的一部分以及做為入口資源上的註解 (ncp/internal_ip_for_policy) 向使用者顯示。

例如,如果虛擬伺服器的外部 IP 位址為 4.4.0.5,內部第 1 層路由器上行連接埠的 IP 位址為 100.64.224.11,則入口規格將為:

    kind: Ingress
    ...
    status:
      loadBalancer:
      ingress:
      - ip: 4.4.0.5
      - ip: 100.64.224.11

入口資源上的註解將為:

    ncp/internal_ip_for_policy: 100.64.224.11

負載平衡器服務

  • NSX-T 將為每個服務連接埠建立第 4 層負載平衡器。

  • TCP 和 UDP 均受支援。

  • 每個服務都具有唯一的 IP 位址。