EC2 - 如何告知 ELB 机器已“准备就绪”

EC2 - 如何告知 ELB 机器已“准备就绪”

我有一个带监控的自动缩放设置,一切正常。代码部署过程现在已掌握,基本上就是这样。

  1. 创建一个新的 launch_config,定义要 pull 的 git commit
  2. 使用新的启动配置更新自动缩放组。
  3. 将服务器的最小尺寸扩大到现有尺寸的 2 倍左右。
  4. 等待它们全部上线
  5. 规模缩小后,旧的就会被淘汰。

我看到的问题是,当我们“等待它们上线”时,它们报告“健康”和“正在服务”,但实际上它们还没有“准备好”提供服务,因为它们正在更新软件包并提取相关源代码。这个时间相差很大,每个 EC2 实例从 2 分钟到 15 分钟不等。

我正在寻找一种手动设置“服务中/健康中”标志的方法,或者一种更好的处理这种滞后的策略。

我会注意到,当实例启动时,Nginx 会自动启动。这是否决定了实例是否健康?关于启动就绪过程的文档(我能找到的)太少了——任何帮助都将不胜感激。

如果有帮助的话,这位于 ELB 后面。健康检查已启用“/”。我想知道它是否就这么简单。

谢谢

答案1

弹性负载均衡器健康检查确定 ELB 是否向任何特定实例发送流量。

你想做的事很简单:

在完成启动和配置之前,请勿在实例上启动 Web 服务器。

答案2

您可以轻松设置一个在您的 EC2 实例上处于活动状态的 URI,并设置 ELB 健康检查来调用它。在该健康检查 URI 返回 200 状态代码之前,该实例不会在 ELB 中处于活动状态以接收流量。

在大多数情况下,默认只是向服务器查询 URI /,但您可以将其更改为您想要的任何内容。在我的例子中,如果 Web 应用程序设置尚未准备好进行流量传输,/ 将失败。您还可以将其指向 CGI 或 PHP 页面,该页面将执行系统检查并在一切准备就绪时返回良好的 200 状态代码。

相关内容