在 Linode 中,使用 NodeBalancer 的网站无法使用 Keep-alives

在 Linode 中,使用 NodeBalancer 的网站无法使用 Keep-alives

我的 linode 切片中有以下配置

NB <----->web1+web2+web3 以下是来自 linode 的配置截图: 在此处输入图片描述

我们需要 http 模式下的 NB,因为我们需要普通 tcp 模式所没有的一些东西。

现在我的问题是:当我出于基准测试目的运行类似pagetest.org之类的程序时,我总是收到消息说我的域正在运行没有keepalive的静态资产。在TCP模式下,keepalive没问题。

我知道 haproxy 在 linode 中充当节点平衡器。我只是想知道“这是 NB/haproxy 的已知限制吗,还是我做错了什么????”

答案1

如果我理解正确的话,您说的是 NodeBalancer 基于 HAProxy。我找不到任何文档说明情况确实如此。

HAProxy 1.4 之前的版本不支持 HTTP Keep-Alive。1.4 版于 2010 年 2 月发布。如果 NodeBalancer 实际上是基于 HAProxy 构建的,并且他们使用的是 1.3 版,那么它将不支持客户端和 NodeBalancer 之间的 HTTP Keep-Alive。

客户端 Keep-Alive 非常有用,因为它可以节省每个 HTTP 请求的往返时间。结合使用 Keep-Alive 和流水线可以在两个往返时间内传递许多请求(一个用于 TCP 设置,一个用于一堆 HTTP 请求),而不是在没有它们的情况下每个资源两次传递请求。这是对事物的简化视图,但却是一个不错的经验法则。

很少有代理支持代理和后端服务器之间的保持连接。这在客户端是不可见的,但会导致传输一些额外的数据包。它并不像客户端保持连接那么重要,因为代理和后端服务器之间的往返时间通常很短。

答案2

根据 Linode 节点平衡器文档

TCP:使用TCP模式来均衡非HTTP服务。

HTTP:在 HTTP 模式下,HTTP KeepAlives 被强制关闭

HTTPS:选择 HTTPS 后,NodeBalancer 将终止 SSL 连接。与 HTTP 模式一样,KeepAlives 将被禁用,客户端的 IP 地址将在 X-Forwarded-For 标头中提供。

相关内容