我有一个带监控的自动缩放设置,一切正常。代码部署过程现在已掌握,基本上就是这样。
- 创建一个新的 launch_config,定义要 pull 的 git commit
- 使用新的启动配置更新自动缩放组。
- 将服务器的最小尺寸扩大到现有尺寸的 2 倍左右。
- 等待它们全部上线
- 规模缩小后,旧的就会被淘汰。
我看到的问题是,当我们“等待它们上线”时,它们报告“健康”和“正在服务”,但实际上它们还没有“准备好”提供服务,因为它们正在更新软件包并提取相关源代码。这个时间相差很大,每个 EC2 实例从 2 分钟到 15 分钟不等。
我正在寻找一种手动设置“服务中/健康中”标志的方法,或者一种更好的处理这种滞后的策略。
我会注意到,当实例启动时,Nginx 会自动启动。这是否决定了实例是否健康?关于启动就绪过程的文档(我能找到的)太少了——任何帮助都将不胜感激。
如果有帮助的话,这位于 ELB 后面。健康检查已启用“/”。我想知道它是否就这么简单。
谢谢
答案1
答案2
您可以轻松设置一个在您的 EC2 实例上处于活动状态的 URI,并设置 ELB 健康检查来调用它。在该健康检查 URI 返回 200 状态代码之前,该实例不会在 ELB 中处于活动状态以接收流量。
在大多数情况下,默认只是向服务器查询 URI /,但您可以将其更改为您想要的任何内容。在我的例子中,如果 Web 应用程序设置尚未准备好进行流量传输,/ 将失败。您还可以将其指向 CGI 或 PHP 页面,该页面将执行系统检查并在一切准备就绪时返回良好的 200 状态代码。