設定負載平衡包括設定 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 檔案中:
設定 use_native_loadbalancer = True。
(選擇性) 將 pool_algorithm 設定為 'ROUND_ROBIN' 或 'LEAST_CONNECTION/IP_HASH'。預設為 'ROUND_ROBIN'。
(選用) 設定 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 位址。