Varnish + ELB公开会议

时间:2016-10-20 09:30:26

标签: caching nginx varnish amazon-elb varnish-4

我正在使用清漆4 + nginx + ELB。当我运行varnishlog时,我每隔2秒就会看到以下新会话:

*   << Session  >> 65622     
-   Begin          sess 0 HTTP/1
-   SessOpen       10.90.148.245 16560 :80 10.13.12.136 80 1476955364.127661 17
-   SessClose      RX_TIMEOUT 5.005
-   End      

当我从ELB中删除清漆服务器时,我没有看到这些会话。 这些会议来自哪里? (ELB健康检查间隔为300秒)

我在调查了为什么ELB在几天之后将这个实例踢掉之后发现了这个问题。

1 个答案:

答案 0 :(得分:2)

  

它们不是ELB IP地址。

你确定吗?

ELB中的每个节点 - 通常在低流量环境中有两个或三个节点 - 有两个IP地址,一个公共地址和一个私有地址。

在EC2控制台的“网络与扩展”下找到有问题的IP地址。安全&gt;网络接口。你应该找到&#34;附件所有者&#34;设置为amazon-elb和&#34;说明&#34;设置为平衡器的名称。

如果它真的不是你的ELB,那么这应该告诉你它是什么。

如果是你的ELB,那么这几乎肯定是&#34;备用&#34;出于性能原因,ELB试图对您的实例保持打开的连接 - 避免在下一个客户端请求到达时等待设置新连接。

您的清漆设置正在快速关闭它们,因此ELB再次尝试。

您应该能够increase the req_timeout大于ELB的空闲超时(默认为60秒),这会导致您看到更少的这些超时。

如果Varnish(或任何其他Web服务器)直接暴露在Internet上,这个建议会有所不同,因为您不希望随机浏览器占用资源......但是在HTTP / S中使用ELB的情况(而不是TCP)模式,ELB负责管理来自浏览器的空闲持久连接,而每个连接都不会消耗与实例的连接,并且ELB正面和背面的连接之间没有1:1的相关性。