跳至主要内容

設定 Amazon ELB Network Load Balancer

本操作指南說明如何在 Amazon 的 EC2 服務中設定 Network Load Balancer (NLB),以將流量導向 EC2 上的多個執行個體。

這些範例展示了將負載平衡器配置為將流量導向三個 Rancher 伺服器節點。如果 Rancher 安裝在 RKE Kubernetes 叢集上,則需要三個節點。如果 Rancher 安裝在 K3s Kubernetes 叢集上,則只需要兩個節點。

本教學介紹的是設定負載平衡器的一種可能方式,而非唯一方式。其他類型的負載平衡器,例如 Classic Load Balancer 或 Application Load Balancer,也可以將流量導向 Rancher 伺服器節點。

Rancher 僅支援在 Amazon NLB 上以 tcp 模式終止連接埠 443 的流量,而不支援 tls 模式。這是因為 NLB 在 NLB 層終止時不會將正確的標頭注入請求中。這意味著如果您想使用由 Amazon Certificate Manager (ACM) 管理的憑證,您應該使用 ALB。

需求​

這些說明假設您已經在 EC2 中建立了 Linux 執行個體。負載平衡器將會把流量導向這些節點。

1. 建立目標群組​

首先為 TCP 協定建立兩個目標群組,一個使用 TCP 連接埠 443,另一個使用 TCP 連接埠 80(提供重新導向至 TCP 連接埠 443)。您將把 Linux 節點加入這些群組。

您的第一個 NLB 配置步驟是建立兩個目標群組。技術上來說,只需要連接埠 443 就能存取 Rancher,但為連接埠 80 新增監聽器會很方便,因為連接埠 80 的流量會自動重新導向至連接埠 443。

無論使用 NGINX Ingress 或 Traefik Ingress 控制器,Ingress 都應該將流量從連接埠 80 重新導向至連接埠 443。

  1. 登入 Amazon AWS Console 以開始操作。請確保選擇您建立 EC2 執行個體(Linux 節點)的區域。
  2. 選擇 Services 並選擇 EC2,找到 Load Balancing 區段並開啟 Target Groups。
  3. 按一下 Create target group 以建立第一個目標群組,用於 TCP 連接埠 443。
備註

健康狀態檢查的處理方式會因 Ingress 而異。詳情請參閱本節。

目標群組 (TCP 連接埠 443)​

根據下表配置第一個目標群組。

選項設定
Target Group Namerancher-tcp-443
Target typeinstance
ProtocolTCP
Port443
VPCChoose your VPC

健康狀態檢查設定:

選項設定
ProtocolTCP
Portoverride,80
Healthy threshold3
Unhealthy threshold3
Timeout6 seconds
Interval10 seconds

按一下 Create target group 以建立第二個目標群組,用於 TCP 連接埠 80。

目標群組 (TCP 連接埠 80)​

根據下表配置第二個目標群組。

選項設定
Target Group Namerancher-tcp-80
Target typeinstance
ProtocolTCP
Port80
VPCChoose your VPC

健康狀態檢查設定:

選項設定
ProtocolTCP
Porttraffic port
Healthy threshold3
Unhealthy threshold3
Timeout6 seconds
Interval10 seconds

2. 註冊目標​

接下來,將您的 Linux 節點加入兩個目標群組。

選擇名為 rancher-tcp-443 的目標群組,按一下 Targets 分頁並選擇 Edit。

選擇您要新增的執行個體(Linux 節點),然後按一下 Add to registered。


螢幕截圖:將目標新增至目標群組 TCP 連接埠 443


螢幕截圖:已新增目標至目標群組 TCP 連接埠 443

當執行個體新增完成後,按一下畫面右下角的 Save。

重複這些步驟,將 rancher-tcp-443 替換為 rancher-tcp-80。需要將相同的執行個體新增為此目標群組的目標。

3. 建立您的 NLB​

使用 Amazon 的精靈建立 Network Load Balancer。在此過程中,您將新增在1. 建立目標群組中建立的目標群組。

  1. 從您的網頁瀏覽器,導航至 Amazon EC2 Console。

  2. 從導航窗格中,選擇 LOAD BALANCING > Load Balancers。

  3. 按一下 Create Load Balancer。

  4. 選擇 Network Load Balancer 並按一下 Create。然後完成每個表單。

步驟 1:配置負載平衡器​

在表單中設定以下欄位:

  • Name: rancher
  • Scheme: internal 或 internet-facing。您為 NLB 選擇的方案取決於您的執行個體和 VPC 的配置。如果您的執行個體沒有關聯的公用 IP,或您只會在內部存取 Rancher,則應該將 NLB Scheme 設定為 internal 而不是 internet-facing。
  • Listeners: Load Balancer Protocol 應為 TCP,對應的 Load Balancer Port 應設定為 443。
  • Availability Zones: 選擇您的 VPC 和 Availability Zones。

步驟 2:配置路由​

  1. 從 Target Group 下拉選單中,選擇 Existing target group。
  2. 從 Name 下拉選單中,選擇 rancher-tcp-443。
  3. 開啟 Advanced health check settings,並將 Interval 配置為 10 seconds。

步驟 3:註冊目標​

由於您之前已經註冊了目標,所以您只需按一下 Next: Review 即可。

步驟 4:審查​

查看負載平衡器詳細資訊,當您滿意時按一下 Create。

在 AWS 建立 NLB 後,按一下 Close。

4. 為 TCP 連接埠 80 新增監聽器至 NLB​

  1. 選擇您新建立的 NLB 並選擇 Listeners 分頁。

  2. 按一下 Add listener。

  3. 使用 TCP:80 作為 Protocol : Port

  4. 按一下 Add action 並選擇 Forward to..。

  5. 從 Forward to 下拉選單中,選擇 rancher-tcp-80。

  6. 按一下畫面右上角的 Save。

NGINX Ingress 和 Traefik Ingress 的健康狀態檢查路徑​

K3s 和 RKE Kubernetes 叢集處理健康狀態檢查的方式不同,因為它們預設使用不同的 Ingress。

對於 RKE Kubernetes 叢集,預設使用 NGINX Ingress,而對於 K3s Kubernetes 叢集,Traefik 是預設的 Ingress。

  • Traefik: 健康狀態檢查路徑為 /ping。預設情況下,/ping 總是會匹配(無論 Host 為何),並且總是會提供來自 Traefik 本身的回應。
  • NGINX Ingress: NGINX Ingress 控制器的預設後端有一個 /healthz 端點。預設情況下,/healthz 總是會匹配(無論 Host 為何),並且總是會提供來自 ingress-nginx 本身的回應。

為了模擬準確的健康狀態檢查,最佳實踐是盡可能使用 Host 標頭(Rancher 主機名稱)結合 /ping 或 /healthz(分別用於 K3s 或 RKE 叢集),以獲得來自 Rancher Pod 的回應,而不是來自 Ingress 的回應。