配置 Amazon NLB

概述

本操作指南介绍了如何在 Amazon EC2 服务中设置 Amazon NLB 负载均衡器,该负载均衡器会将流量定向到 EC2 上的多个实例。

在这些示例中,负载均衡器将被配置为将流量定向到三个 Rancher Server 节点。如果将 Rancher 安装在 RKE Kubernetes 集群上,则需要三个节点。如果将 Rancher 安装在 K3s Kubernetes 集群上,则仅需要两个节点。

Amazon NLB 负载均衡器只是实现负载均衡的其中一种方式。其他种类的负载均衡器如传统负载路由器(Classic Load Balancer)和应用负载路由器(Application Load Balancer),也可以将流量转发到 Rancher 的 server 节点。

Rancher 仅支持使用 Amazon NLB 以 tcp 模式终止 443 端口流量。因为终止 NLB 时,NLB 不会将正确的 headers 注入请求中。如果您要使用由 Amazon Certificate Manager(ACM)管理的证书,则应使用 ALB。

配置 Amazon NLB 分多个阶段:

  1. 创建目标组
  2. 注册目标
  3. 创建您的 NLB
  4. 将侦听器添加到 NLB 的 TCP 80 端口

先决条件: 我们默认您已经在 EC2 中创建了 Linux 实例,负载均衡器会将流量定向到这三个节点。

创建目标组

首先为TCP协议创建两个目标组,一个使用 TCP 端口 443,另一个使用 TCP 端口 80(将被重定向到 443 端口),然后将 Linux 节点添加到这些组中。

第一个 NLB 配置步骤是创建两个目标组。访问 Rancher 原则上只需要用到端口 443,但是为了方便使用,我们可以给 80 端口也添加一个侦听器,它将被自动重定向到端口 443。节点上的 NGINX ingress 控制器将确保端口 80 被重定向到端口 443。

不管您使用的是 NGINX Ingress,还是 Traefik Ingress controller,Ingress 都应该将流量从 80 端口转发到 443 端口。

  1. 登录到Amazon AWS 控制台。请选择创建了 EC2 实例(Linux 节点)的区域
  2. 选择服务,然后选择EC2,找到负载均衡并打开目标群组
  3. 单击创建目标组创建有关 TCP 端口 443 的第一个目标组。

说明:不同的 Ingress 使用的健康检查不一样,详情请参考NGINX Ingress 和 Traefik Ingress 的健康检查路径

目标组(TCP 端口 443)

单击创建目标组,根据下表的选项和设置,配置 TCP 端口 443 的目标组。

选项设置
目标组名称rancher-tcp-443
协议TCP
端口443
目标类型实例
VPC选择您的 VPC

健康检查配置参数:

选项设置
协议TCP
端口443
正常阈值 (高级运行状况检查设置)3
不正常阈值 (高级)3
超时 (高级)6 秒
间隔 (高级)10 秒

目标组(TCP 端口 80)

单击创建目标组创建,根据下表的选项和设置,配置 TCP 端口 80 的目标组。

选项设置
目标组名称rancher-tcp-80
协议TCP
端口80
目标类型实例
VPC选择您的 VPC

健康检查配置参数:

选项设置
协议TCP
端口443
正常阈值 (高级运行状况检查设置)3
不正常阈值 (高级)3
超时 (高级)6 秒
间隔 (高级)10 秒

注册目标

接下来,将 Linux 节点添加到两个目标组中。

选择名为rancher-tcp-443的目标组,单击目标选项卡,然后选择编辑

Edit target group 443

选择要添加的实例(Linux 节点),然后单击添加到已注册


将目标添加到目标组 TCP 端口 443


Add targets to target group 443


已将目标添加到目标组 TCP 端口 443


Added targets to target group 443

添加实例后,单击右下方的保存

重复上述步骤,将rancher-tcp-443替换为rancher-tcp-80,将 Linux 节点添加到 rancher-tcp-80 目标组中。

创建 NLB

使用 Amazon 的向导创建网络负载均衡器。您将添加在创建目标组中创建的目标组。

  1. 在您的 Web 浏览器中,导航到Amazon EC2 控制台

  2. 在导航中,选择负载均衡 > 负载均衡器

  3. 单击创建负载均衡器,选择负载均衡器种类。

  4. 选择网络负载均衡器,然后单击创建。然后填写每个表单。

配置负载均衡器

在表单中设置以下字段:

  • 名称: rancher
  • 模式: 内部面向 internet。您为 NLB 选择的方案取决于实例和 VPC 的配置。如果您的实例没有绑定的公网 IP,或者您希望通过内网访问 Rancher,则应该将 NLB 方案设置为内部,而不是面向 internet
  • 侦听器: 负载均衡器协议应为TCP,并且相应的负载均衡器端口应设置为443
  • 可用区: 选择您的VPC可用区

步骤 2: 配置路由

  1. 目标组下拉列表中,选择已存在的目标组
  2. 名称下拉列表中,选择rancher-tcp-443
  3. 打开高级运行状况检查设置,并将时间间隔配置为10 秒

步骤 3: 注册目标

由于您已经在先前的步骤中注册了目标,您在这个页面只需单击下一步: 审核

步骤 4: 审核

查看负载均衡器的详细信息,确认信息填写无误后,单击创建

AWS 创建 NLB 后,单击关闭

为 TCP 端口 80 向 NLB 添加侦听器

  1. 选择新创建的 NLB,然后选择侦听器 选项卡。

  2. 单击 添加侦听器,配置侦听器参数。

  3. 使用TCP:80作为协议 : 端口

  4. 单击添加操作,选择转发至...

  5. 转发至下拉列表中,选择rancher-tcp-80

  6. 单击屏幕右上方的保存,保存上述参数设置。

NGINX Ingress 和 Traefik Ingress 的健康检查路径

因为 K3s 和 RKE 集群使用的 Ingress 不同,RKE 集群默认使用的是 NGINX Ingress,K3s 默认使用的是 Traefik,所以它们处理路由健康检查的方式不一样。

  • Traefik: 健康检查路径是 /ping。默认的健康检查路径是/pingTraefik 自身会响应该请求。
  • NGINX Ingress: NGINX Ingress 的默认后端有一个/healthz端点。默认的健康检查路径是/healthzNGINX 自身会响应该请求。

模拟一个准确的健康检查的最好方式是,使用主机 header(Rancher hostname)加上/ping/healthz,得到 Rancher Pods 的相应消息而不是 Ingress 的响应消息。

最后由 yzeng25更新 于