解决方法
您可以为应用程序负载均衡器的目标组分配不同的权重,以按比例分配流量。
创建目标组
要创建希望注册到应用负载均衡器的目标组,请完成以下步骤:
- 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
- 选择您的 Amazon EC2 实例所在的 AWS 区域。
- 在导航窗格中的 Load balancing(负载均衡)下,选择 Target groups(目标组)。
- 要创建第一个目标组,请完成以下步骤:
选择 Create target group(创建目标组)。
对于 Target group name(目标组名称),为目标组指定名称。
配置目标组的协议、端口和虚拟私有云(VPC)。
选择创建。
对于实例,选择一个或多个实例。
为实例指定端口。
选择 Include as pending below(以下列为待处理事项),然后选择 Create target group(创建目标组)。
- 要设置加权目标组,必须创建至少两个目标组。重复步骤 4 以创建第二个目标组。
创建应用程序负载均衡器
**重要事项:**如果您想使用应用程序负载均衡器,请继续查看“配置侦听器规则并分配权重”部分。要创建应用程序负载均衡器,请完成以下步骤:
- 在导航窗格中的 Load balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。
- 选择 Create load balancer(创建负载均衡器)。
- 对于 Select load balancer type(选择负载均衡器类型),选择 Application Load Balancer(应用程序负载均衡器),然后选择 Create(创建)。
- 在 Create Application Load Balancer(创建应用程序负载均衡器)向导中,完成以下步骤:
输入负载均衡器的名称。
选择 Internet-facing(面向互联网)或 Internal(内部)。
选择 IP Address type(IP 地址类型)。
选择您的 VPC 和至少两个可用区。
对于 Security groups(安全组),选择或创建安全组。
对于 Listeners and routing(侦听器和路由),将默认 HTTP 侦听器保留在端口 80 上。
- 在 Configure routing(配置路由)页面上,完成以下步骤:
对于目标组,选择现有目标。
对于 Name(名称),选择您创建的第一个目标组。
选择 Next: Register Targets(下一步:注册目标)。
- 在 Register Targets(注册目标)页面上,确认您的已注册实例显示在 Registered instances(已注册实例)下。
**注意:**要修改目标,请返回目标组控制台。Register Targets(注册目标)页面仅供审阅。
- 在 Review(审阅)页面上,选择 Create(创建)。
- 创建应用程序负载均衡器后,选择 Close(关闭)。
- 创建向导关闭后,您将返回 Load Balancer(负载均衡器)页面。从负载均衡器列表中选择新的负载均衡器。
配置侦听器规则并分配权重
要为目标组分配权重,请完成以下步骤,为应用程序负载均衡器配置侦听器规则:
- 在 Listeners(侦听器)选项卡上,选择 View/edit rules(查看/编辑规则)。
- 选择 Edit rules(编辑规则)。
- 在 Forward to(转发到)旁边,选择 Edit(编辑)。
- 添加您之前创建的第二个目标组。
- 为目标组的权重输入一个介于 0 和 999 之间的值。
- 选择 Check mark(复选标记),然后选择 Update(更新)。
- (可选)如果目标组处于粘滞状态,请设置 Group level stickiness(组级别粘性)。
**注意:**当您配置组级别粘性时,路由的请求在会话期间将保留在目标组中。默认值为 1 小时。会话持续时间结束后,负载均衡器根据目标组权重分配请求。
应用程序负载均衡器根据目标组权重分配流量。如果一个组中的所有目标均未通过运行状况检查,则您的应用程序负载均衡器不会失效转移到另一个组。均衡器继续将流量路由到运行状况不佳的目标。最佳做法是不使用加权目标组作为失效转移机制。
如果第一个目标的权重为 70%,第二个目标的权重为 30%,则大多数请求来自第一个目标组。
命令示例:
for X in seq 6; do curl -so -i /dev/null -w "" http://FINAL-721458494.us-east-2.elb.amazonaws.com; done
输出示例:
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T2 </h1>
<h1> This is T2 </h1>
在此示例中,T1 表示来自第一个目标组(70% 权重)的响应,T2 表示来自第二个目标组(30% 权重)的响应。
如果第二个目标的权重为 70%,第一个目标的权重设置为 30%,则大多数请求来自第二个目标组。
命令示例:
for X in seq 7; do curl -so -i /dev/null -w "" http://FINAL-721458494.us-east-2.elb.amazonaws.com; done
输出示例:
<h1> This is T2 </h1>
<h1> This is T2 </h1>
<h1> This is T2 </h1>
<h1> This is T1 </h1>
<h1> This is T1 </h1>
<h1> This is T2 </h1>
<h1> This is T2 </h1>
在此示例中,T2 表示来自第二个目标组(70% 权重)的响应,T1 表示来自第一个目标组(30% 权重)的响应。请输入负载均衡器的名称。