本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
编辑网络负载均衡器的目标组属性
创建网络负载均衡器的目标组之后,您可以编辑其目标组属性。
客户端 IP 保留
在将请求路由到后端目标时,Network Load Balancer 可以保留客户端的源 IP 地址。禁用客户端 IP 保留时,源 IP 地址为网络负载均衡器的私有 IP 地址。
默认情况下,客户端 IP 保留处于启用状态(且无法禁用),IP 类型目标组采用UDP和 TCP _ UDP 协议。但是,您可以使用目标组属性启用或禁用TLS目标组的TCP客户端 IP 保留。preserve_client_ip.enabled
默认设置
-
实例类型目标组:已启用
-
IP 类型目标组 (UDP、TCP _UDP):已启用
-
IP 类型目标组 (TCP,TLS):已禁用
要求和注意事项
-
启用客户端 IP 保留后,流量必须直接从网络负载均衡器流向目标。目标必须与 Network Load Balancer 位于同一个区域中,或者位于同一个区域的对VPC等设备VPC中。
-
使用网关负载均衡器终端节点检查网络负载均衡器与目标(实例或 IP)之间的流量时,不支持保留客户端 IP,即使目标与网络负载均衡器位于同一个亚马逊VPC。
-
以下实例类型不支持保留客户端 IP:C1、、、、、CC1、CC2、G1 CG1 CG2 CR1、G2、、、、M1 HI1、M2 HS1、M3 和 T1。我们建议您在禁用客户端 IP 保留的情况下将这些实例类型注册为 IP 地址。
-
客户端 IP 保留对来自的入站流量没有影响 AWS PrivateLink。 AWS PrivateLink 流量的源 IP 始终是 Network Load Balancer 的私有 IP 地址。
-
当目标组包含或其他 Network Load Balancer 的 AWS PrivateLink ENIsENI,则不支持保留客户端 IP。这将导致与那些目标的通信中断。
-
客户端 IP 保留对从IPv6到的流量没有影响IPv4。此类型流量的源 IP 始终是 Network Load Balancer 的私有 IP 地址。
-
当您按 Application Load Balancer 类型指定目标时,Network Load Balancer 将保留所有传入流量的客户端 IP 并发送到 Application Load Balancer。然后,Application Load Balancer 会将客户端 IP 附加到
X-Forwarded-For
请求标头,之后才发送此请求标头。 -
客户端 IP 保留更改仅对新TCP连接生效。
-
NAT启用客户端 IP 保留后,不支持环回,也称为发夹功能。启用后,您可能会遇到与在目标上观察到的套接字重用有关TCP的 /IP 连接限制。当客户端或客户端前面的NAT设备在同时连接到多个负载平衡器节点时使用相同的源 IP 地址和源端口时,可能会出现这些连接限制。如果负载均衡器将这些连接路由到同一个目标,则这些连接对目标来说似乎是来自同一源套接字,从而导致连接错误。当发生这种情况时,客户端可能会重试(如果连接失败)或重新连接(如果连接中断)。您可以通过增加源临时端口的数量或增加负载均衡器的目标数来减少此类连接错误。您可以通过禁用客户端 IP 保留或禁用跨区域负载均衡来防止此类连接错误。
-
当禁用客户端 IP 保留时,网络负载均衡器支持到每个唯一目标(IP 地址和端口)的 5.5 万个并发连接或每分钟大约 5.5 万个连接。如果连接数超过该值,则会增大出现端口分配错误的几率,进而导致无法建立新连接。可以使用
PortAllocationErrorCount
指标跟踪端口分配错误。要修复端口分配错误,请将更多目标添加到目标组。有关更多信息,请参阅 CloudWatch 您的 Network Load Balancer 的指标。
使用控制台配置客户端 IP 保留
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择目标组。
-
选择目标组的名称以打开其详细信息页面。
-
在 Attributes(属性)选项卡上,选择 Edit(编辑)。
-
要启用客户端 IP 保留,请开启 Preserve client IP addresses(保留客户端 IP 地址)。要禁用客户端 IP 保留,请关闭 Preserve client IP addresses(保留客户端 IP 地址)。
-
选择 Save changes(保存更改)。
要启用或禁用客户端 IP 保留,请使用 AWS CLI
使用带有preserve_client_ip.enabled
属性的modify-target-group-attributes命令。
例如,使用以下命令禁用客户端 IP 保留。
aws elbv2 modify-target-group-attributes --attributes Key=preserve_client_ip.enabled,Value=
false
--target-group-arnARN
您的输出应类似于以下示例。
{
"Attributes": [
{
"Key": "proxy_protocol_v2.enabled",
"Value": "false"
},
{
"Key": "preserve_client_ip.enabled",
"Value": "false"
},
{
"Key": "deregistration_delay.timeout_seconds",
"Value": "300"
}
]
}
取消注册延迟
取消注册目标时,负载均衡器将停止创建与目标的新连接。负载均衡器会使用连接耗尽来确保进行中的流量在现有连接上完成。如果已经取消注册的目标运行状况良好并且现有连接未处于空闲状态,负载均衡器可以继续将流量发送到该目标。要确保现有连接关闭,您可以执行以下任一操作:为连接终止启用目标组属性、确保在取消注册之前实例运行状况不佳或者定期关闭客户端连接。
取消注册的目标的初始状态为 draining
,在此期间,该目标将停止接收新连接。但是,由于配置传播延迟,目标可能仍然会收到连接。默认情况下,负载均衡器会在 300 秒后将取消注册的目标的状态更改为 unused
。如需更改负载均衡器在将取消注册的目标的状态更改为 unused
之前等待的时长,请更新取消注册延迟值。我们建议您指定至少 120 秒的值以确保完成请求。
如果为连接终止启用目标组属性,则对取消注册目标的连接将在取消注册超时结束后不久关闭。
使用控制台更新取消注册属性
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择目标组。
-
选择目标组的名称以打开其详细信息页面。
-
在 Attributes(属性)选项卡上,选择 Edit(编辑)。
-
要更改取消注册超时,请在 Deregistration delay 中输入新值。要确保在取消注册目标后现有连接关闭,请选择 Terminate connections on deregistration(取消注册时终止连接)。
-
选择 Save changes(保存更改)。
要更新取消注册属性,请使用 AWS CLI
使用modify-target-group-attributes命令。
代理协议
Network Load Balancer 使用代理协议版本 2 来发送其他连接信息,如源和目标。代理协议版本 2 提供代理协议标头的二进制编码。对于TCP侦听器,负载均衡器会在数据前面添加代理协议标头。TCP它不会丢弃或覆盖任何现有数据,包括客户端或网络路径中的任何其他代理、负载均衡器或服务器发送的任何传入代理协议标头。因此,可以接收多个代理协议标头。此外,如果您的 Network Load Balancer 之外的目标还有另一个网络路径,则第一个代理协议标头可能不是您的 Network Load Balancer 中的标头。
如果您使用 IP 地址指定目标,则向您的应用程序提供的源 IP 地址取决于目标组的协议,如下所示:
-
TCP和TLS:默认情况下,客户端 IP 保留处于禁用状态,提供给您的应用程序的源 IP 地址是负载均衡器节点的私有 IP 地址。要保留客户机的 IP 地址,请确保目标位于相同VPC或对等节点内,VPC并启用客户端 IP 保留。如果您需要客户端的 IP 地址并且不满足这些条件,请启用代理协议并从代理协议标头获取客户端 IP 地址。
-
UDP和 TCP _UDP:源 IP 地址是客户机的 IP 地址,因为默认情况下,这些协议的客户端 IP 保留处于启用状态,并且无法禁用。如果您通过实例 ID 指定目标,则提供给应用程序的源 IP 地址将是客户端 IP 地址。但是,如果您愿意,可以启用代理协议并从代理协议标头中获取客户端 IP 地址。
如果您通过实例 ID 指定目标,则提供给应用程序的源 IP 地址将是客户端 IP 地址。但是,如果您愿意,可以启用代理协议并从代理协议标头中获取客户端 IP 地址。
注意
TLS监听器不支持客户端或任何其他代理发送的带有代理协议标头的传入连接。
运行状况检查连接
启用代理协议后,代理协议标头也会包含在来自负载均衡器的运行状况检查连接中。但是,使用运行状况检查连接,客户端连接信息不会在代理协议标头中发送。
VPC终端节点服务
对于通过VPC终端节点服务来自服务使用者的流量,提供给您的应用程序的源 IP 地址是负载均衡器节点的私有 IP 地址。如果您的应用程序需要服务使用器的 IP 地址,请启用代理协议并从代理协议标头获取这些 IP 地址。
代理协议标头还包括终端节点的 ID。此信息使用自定义 Type-Length-Value (TLV) 向量进行编码,如下所示。
字段 | 长度 (8 位字节) | 描述 |
---|---|---|
Type |
1 |
PP2_TYPE_AWS (0xEA) |
Length |
2 |
值的长度 |
值 |
1 |
PP2SUBTYPE_ AWS_VPCE _ID (0x01) |
可变 (值长度减 1) | 终端节点的 ID |
有关解析TLV类型 0xEA 的示例,请参见/。https://github.com/aws/ elastic-load-balancing-tools tree/master/proprot
启用代理协议
在目标组上启用代理协议之前,请确保您的应用程序预料到并且可以解析代理协议版本 2 标头,否则它们可能会失败。有关更多信息,请参阅PROXY协议版本 1 和 2
使用控制台启用代理协议版本 2
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择目标组。
-
选择目标组的名称以打开其详细信息页面。
-
在 Attributes(属性)选项卡上,选择 Edit(编辑)。
-
在编辑属性页面上,选择代理协议 v2。
-
选择 Save changes(保存更改)。
要启用代理协议 v2,请使用 AWS CLI
使用modify-target-group-attributes命令。
粘性会话
粘性会话是用于将客户端流量传输到目标组中的同一目标的机制。对于维护状态信息以便向客户端提供持续体验的服务器来说,这很有用。
注意事项
-
使用粘性会话可能会导致连接和流分布不均,这可能会影响目标的可用性。例如,同一NAT设备后面的所有客户端都具有相同的源 IP 地址。这会使系统将来自这些客户端的所有流量传输到同一目标。
-
如果目标组中的任何目标的运行状况发生变化,或者您向目标组注册或取消注册了目标,则负载均衡器可能会重置该目标组的粘性会话。
-
当为目标组开启粘性属性时,不支持被动运行状况检查。有关更多信息,请参阅目标组的运行状况检查。
-
TLS听众不支持粘性会话。
使用控制台启用粘性会话
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择目标组。
-
选择目标组的名称以打开其详细信息页面。
-
在 Attributes(属性)选项卡上,选择 Edit(编辑)。
-
在 Target selection configuration(目标选择配置)下,开启 Stickiness(粘性)。
-
选择 Save changes(保存更改)。
要启用粘性会话,请使用 AWS CLI
使用带有stickiness.enabled
属性的modify-target-group-attributes命令。
目标组的跨区域负载均衡
负载均衡器的节点将来自客户端的请求分配给已注册目标。启用跨区域负载均衡后,每个负载均衡器节点会在所有已注册可用区中的已注册目标之间分配流量。禁用跨区域负载均衡后,每个负载均衡器节点会仅在其可用区中的已注册目标之间分配流量。如果区域故障域优先于区域性故障域,这可以用于确保运行状况良好区域不受运行状况不佳区域的影响,或者改善整体延迟。
对于网络负载均衡器,负载均衡器级别的跨区域负载均衡默认为关闭,但您可以随时启动它。对于目标组,默认设置是使用负载均衡器设置,但您可以通过在目标组级别明确启动或关闭跨区域负载均衡来覆盖默认设置。
注意事项
-
为 Network Load Balancer 启用跨区域负载平衡时,将收取EC2数据传输费用。有关更多信息,请参阅《AWS 数据导出用户指南》中的了解数据传输费用
-
目标组设置将决定目标组的负载均衡行为。例如,假设启用了负载均衡器级别的跨区域负载均衡,并禁用了目标组级别的跨区域负载均衡,则发送到目标组的流量不会进行跨区域路由。
-
关闭跨区域负载平衡时,请确保每个负载均衡器的区域中都有足够的目标容量,以便每个区域都能够为其关联的工作负载提供服务。
-
关闭跨区域负载平衡时,请确保所有目标组均参与到相同的可用区中。空的可用区被视为运行状况不佳。
修改负载均衡器的跨区域负载均衡
您可以随时开启或关闭负载均衡器级别的跨区域负载均衡。
使用控制台修改负载均衡器的跨区域负载均衡
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中的 Load Balancing (负载平衡) 下,选择 Load Balancers (负载均衡器)。
-
选择负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
在 Edit load balancer attributes(编辑负载均衡器属性)页面上,开启或关闭 Cross-zone load balancing(跨区域负载均衡)。
-
选择 Save changes(保存更改)。
要修改负载均衡器的跨区域负载均衡,请使用 AWS CLI
使用带有load_balancing.cross_zone.enabled
属性的modify-load-balancer-attributes命令。
修改目标组的跨区域负载均衡
目标组级别的跨区域负载均衡设置会覆盖负载均衡器级别的设置。
如果目标组类型为 instance
或 ip
,您可以开启或关闭目标组级别的跨区域负载均衡。如果目标组类型为 alb
,则目标组始终从负载均衡器继承跨区域负载均衡设置。
使用控制台修改目标组的跨区域负载均衡
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的 Load Balancing(负载均衡)下,选择 Target Groups(目标组)。
-
选择目标组的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
在 Edit target group attributes(编辑目标组属性)页面上,为 Cross-zone load balancing(跨区域负载均衡)选择 On(开)。
-
选择 Save changes(保存更改)。
要修改目标组的跨区域负载均衡,请使用 AWS CLI
使用带有load_balancing.cross_zone.enabled
属性的modify-target-group-attributes命令。
运行状况不佳的目标的连接终止
默认情况下启用连接终止。当网络负载均衡器的目标未通过配置的运行状况检查并且被认为运行状况不佳时,负载均衡器会终止已建立的连接,并停止将新连接路由到目标。在禁用连接终止的情况下,目标仍被视为运行状况不佳且不接受新连接,但已建立的连接保持活动状态,允许它们正常关闭。
可以为每个目标组单独设置运行状况不佳目标的连接终止。
使用控制台修改连接终止设置
打开亚马逊EC2控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择目标组。
-
选择目标组的名称以打开其详细信息页面。
-
在 Attributes(属性)选项卡上,选择 Edit(编辑)。
-
在目标运行状况不佳状态管理下,选择当目标变得运行状况不佳时终止连接已启用还是已禁用。
-
选择 Save changes(保存更改)。
要修改连接终止设置,请使用 AWS CLI
使用带有target_health_state.unhealthy.connection_termination.enabled
属性的modify-target-group-attributes命令。
运行状况不佳的耗尽间隔
重要
在启用运行状况不佳的耗尽间隔之前,必须先禁用连接终止。
将处于 unhealthy.draining
状态的目标视为运行状况不佳,不会接收新连接,但在配置的间隔内保留已建立的连接。运行状况不佳的连接间隔确定了目标在状态变为 unhealthy
之前保持 unhealthy.draining
状态的时间。如果目标在运行状况不佳的连接间隔期间通过运行状况检查,则其状态将再次变为 healthy
。如果触发取消注册,则目标状态变为 draining
,且取消注册延迟超时开始。
可以为每个目标组单独设置运行状况不佳的耗尽间隔。
使用控制台修改运行状况不佳的耗尽间隔
打开亚马逊EC2控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择目标组。
-
选择目标组的名称以打开其详细信息页面。
-
在 Attributes(属性)选项卡上,选择 Edit(编辑)。
-
在目标运行状况不佳状态管理下,确保已关闭当目标变得运行状况不佳时终止连接。
-
为运行状况不佳的耗尽间隔输入一个值。
-
选择 Save changes(保存更改)。
要修改不健康的排水间隔,请使用 AWS CLI
使用带有target_health_state.unhealthy.draining_interval_seconds
属性的modify-target-group-attributes命令。