【问题标题】:How to automatically deregister EC2 instance from AWS ELB on termination?如何在终止时从 AWS ELB 自动注销 EC2 实例?
【发布时间】:2015-05-13 07:44:33
【问题描述】:

如果 EC2 实例是 AWS Elastic Load Balancer (ELB) 的成员,终止此 EC2 实例不会将其从 ELB 中删除。

它将被标记为 N/A,并且停止服务。 然后,我们的监控系统会通知我们 ELB 中的不健康实例。

我们当前的解决方案是定期轮询和验证每个 ELB 成员的 boto 脚本。这行得通,但这是一个拉动数据架构,它使我们的 AWS API 节流陷入困境。

是否有一个选项可以自动从 ELB 中删除终止/丢失的实例? 或者,是否可以在推送数据(SQS、SNS)上而不是拉取数据(API、w/boto)?

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    我可以理解需要轮询的问题,因为您采用了拉取设计 [ 轮询更改并拉取 boto 脚本进行更改]。

    更简单的方法是使用推送方法,即按需显式创建实例或删除实例。

    有几种方法可以做;我能想到的几种方法

    1. 我相信终止 API 调用将导致正常关闭然后终止 - 如果我的理解是正确的,那么您可以使用可以触发的 On-Shutdown 脚本将其自身移除到 ELB 后面。你可以得到EC2 Metadata to identify itself的帮助——实例ID;因此您可以在每个实例中放置相同的脚本或制作一个 AMI。

    2. 使用 Lambda 函数通过 SNS [ CloudTrail -> SNS -> Lambda Invoke ] 侦听 CLoudTrail 日志,将它们解析为 "eventName": "TerminateInstances",然后查找实例 ID 并将其从 ELB 中删除。

    3. 这更像 [ 1a + 2a ] - 在运行 boto(或脚本)的情况下,您会留下一条 SNS 消息,该消息将调用 lambda,而后者又会从 ELB 中删除实例。将有帮助且易于实现有条件的删除或用例更改的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-27
      • 2017-03-24
      • 2012-05-19
      • 2013-01-13
      • 2016-06-18
      • 1970-01-01
      • 2023-03-25
      • 2017-04-26
      相关资源
      最近更新 更多