32

观察

当使用 Amazon ELB应用程序负载均衡器并使用粘性会话时,负载均衡器会插入一个AWSALB在第一个请求中命名的 cookie。为了让下一个请求坚持到同一个目标节点(EC2 实例),cookie 应该包含在该请求中。这样做时,负载均衡器似乎在对第二个请求的响应中插入了不同的 cookie 值。当在第三个请求中包含这个新的 cookie 值时,我们会在响应中得到一个新的 cookie 值。等等……</p>

(这与粘性会话与 Classic Load Balancer的工作方式不同,其中 cookie 被命名AWSELB并保留其值,直到被客户端或负载均衡器丢弃。)

cookie 一直更改值的原因AWSALB似乎是(如docs所述):

cookie 的名称是 AWSALB。这些 cookie 的内容使用旋转密钥进行加密。您无法解密或修改负载均衡器生成的 cookie。

因此,即使 cookie 的内容可能相同,我们也无法判断。

问题

问题是对负载均衡器的请求是否必须始终包含最近收到的AWSALBcookie 值,或者是否可以发送一些以前收到的值(当然,来自同一个粘性会话)。

如果这是一项要求,AWS ELB 应用程序负载均衡器将无法为执行多个并行请求的客户端(在收到第一个AWSALBcookie 之后)提供服务,而只能为以顺序方式(一次一个)执行所有请求的客户端提供服务。

任何人都可以对此有所了解吗?

4

1 回答 1

39

在这里等待回复后,我向亚马逊提出了一个支持案例,并得到了这样的回复:

我了解您想确认是否需要为每个请求提供最新的粘性 cookie。

您正确地注意到 CLB 和 ALB 之间的行为不同。由于 Application Load Balancer 将流量引导到多个目标组的不同功能,每个目标组都有自己的粘性,因此 ALB 对引导流量所需的信息进行加密,并为每个请求提供新的 cookie。这可确保始终正确遵守不同组的不同时间。

客户端始终可以获得最新的 cookie,因为内部信息将确保正确路由到同一目标。如果您想重用单个 cookie 也是可能的,ALB 将尊重它并根据 cookie 中的粘性正确路由流量。不过,我不建议在超过 60 秒的时间内使用相同的 cookie。这是为了确保在目标变得不可用的情况下,您可以获得带有新粘性信息的新 cookie,这些信息会将您引导到新目标。

于 2018-03-23T11:42:19.650 回答