负载均衡器显示网关需要 1-2 分钟来加载 css,这正常吗?

负载均衡器显示网关需要 1-2 分钟来加载 css,这正常吗?

最近我学习了如何使用 aws 设置负载均衡器并将其指向根/子域。

但在尝试的过程中,我发现有一些延迟。例如,我的设置是

3 个实例,使用nginxnode、 和pm2

我改变了html每个实例的内容,例如<h1>load 1</h1> <h1>load 2</h1> <h1>load 3</h1>

然后,当我继续重新加载负载均衡器 DNS 时,它确实显示实例正在随机切换,所以我知道它正在正常工作。

然后我进入其中一个实例,停止pm2

我再次刷新我的页面,有时它会显示,gateway error我相信这是因为它进入了我停止的实例,有时它会显示页面,但是使用非常糟糕的 CSS,当我打开 console.log 时,会出现错误提示,说无法找到文件。

大约需要 1-2 分钟,直到一切恢复正常。

我想知道这是否正常以及应该如何发生?或者有没有什么方法可以优化它以便让用户获得更好的用户体验?

谢谢您的任何建议。

答案1

当您停止实例时,出现了两个问题:

  1. 您收到网关错误,因为页面请求被重定向到失败的实例。
  2. 您收到了页面,但 CSS 错误。发生这种情况的原因是页面请求发往了正常实例,但后续的 CSS 文件请求发往了错误实例。

这就是 ELB 的工作原理。ELB 使用健康检查来了解您的实例是否出现问题。但这需要时间。您所看到的 1 到 2 分钟是 ELB 确定实例是否失败的时间。

您可以在 ELB 配置中配置健康检查的频率。

答案2

配置负载均衡器时,会涉及健康检查。故障节点的检测不是即时的,健康检查必须先失败,然后该节点才会从负载均衡器中移除。

您可以将健康检查时间设置得非常短,但这会使情况变得更糟。如果您的网站非常繁忙,并且一个实例未通过健康检查,则该实例将被删除,然后其他实例将有更多工作要做,它们将开始未通过健康检查,就像多米诺骨牌一样,您的网站将瘫痪。

相关内容