AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 831137
Accepted
c4urself
c4urself
Asked: 2017-02-08 08:57:35 +0800 CST2017-02-08 08:57:35 +0800 CST 2017-02-08 08:57:35 +0800 CST

当实例计数在 min 和 max 之间时如何使 AWS ASG 什么都不做

  • 772

我们正在使用 Terraform 为我们的大多数 AWS EC2 实例启动 ASG。问题是有时我们想在终止实例之前做一些额外的工作。例如:在节点运行的 EC2 实例终止之前从集群中停用节点。如果我们只是降低min== max(我们的默认值),那么实例将被终止,我们无法运行优雅的退役。

相反,我尝试的是降低min到新的期望值(例如:6)并将 保持max在旧值(例如:10),在这种情况下发生的情况是该desired值保持在 10(the max)并终止 EC2实例会导致 ASG 启动一个新实例。注意:我们根本没有设置 Terraform desired_capacity设置。

如果我desired_capacity手动设置,我会冒 ASG 终止尚未正常退役的节点的风险,所以我认为这不是我的选择。

我最希望的是,当 ASG 的当前 EC2 实例计数介于两者之间时,ASG 什么也不做min,max让我手动终止实例。显然,如果计数低于min我仍然希望 ASG 启动一个新的 EC2 实例。

有什么办法可以做到这一点?

amazon-ec2 amazon-web-services terraform
  • 2 2 个回答
  • 1149 Views

2 个回答

  • Voted
  1. Matt Houser
    2017-02-08T09:19:00+08:002017-02-08T09:19:00+08:00

    有两种可能的方法来实现你想要的:

    选项 1:暂停 Auto Scaling 进程

    您可以在进行调整时将 Auto Scaling 组的处理“暂停”。

    例如,您可以尝试:

    1. 暂停 Auto Scaling 处理:aws autoscaling suspend-processes --auto-scaling-group-name MyGroup
    2. 停用并终止您的 EC2 实例,
    3. 手动调整所需的计数,
    4. 恢复 Auto Scaling 处理:aws autoscaling resume-processes --auto-scaling-group-name MyGroup

    http://docs.aws.amazon.com/cli/latest/reference/autoscaling/suspend-processes.html

    选项 2:使用 Auto Scaling 生命周期挂钩

    使用 Lifecycle Hooks,您启动和/或终止的 EC2 实例有机会进行初始或终止前处理。例如,您可以让钩子通知终止实例它即将终止,并且它可以将自己从集群中退役。

    http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html

    • 3
  2. Best Answer
    Mikhail Lesyk
    2017-02-14T08:28:13+08:002017-02-14T08:28:13+08:00

    假设解决方案:

    选项 1:您的 ASG 应在实例保护开启的情况下创建- Terraform 文档

    在这种情况下,我们可以进行下一个操作序列,例如停用:

    1. 执行特定实例的退役(从中删除数据)
    2. 按理想值减少ASG 大小的计数
    3. 应用 Terraform 状态
    4. 从停用的实例中删除保护标志:aws autoscaling set-instance-protection --instance-ids <instances_ids> --auto-scaling-group-name <asg_name> --no-protected-from-scale-in

    选项 2:您的 ASG不是使用实例保护创建的。

    在这种情况下,我们可以进行下一个操作序列,例如停用:

    1. 在所有 ASG 实例上添加保护标志:aws autoscaling set-instance-protection --instance-ids <instances_ids> --auto-scaling-group-name <asg_name> --protected-from-scale-in
    2. 执行特定实例的退役(从中删除数据)
    3. 按理想值减少ASG 大小的计数
    4. 应用 Terraform 状态
    5. 从停用的实例中删除保护标志:aws autoscaling set-instance-protection --instance-ids <instances_ids> --auto-scaling- group-name <asg_name> --no-protected-from-scale-in
    6. (可选)等到 ASG 缩小到所需大小并从其他实例中删除保护标志
    • 3

相关问题

  • 权限被拒绝(公钥)。从本地 Ubuntu 到 Amazon EC2 服务器的 SSH

  • 管理员如何管理他们的 EC2 EBS 和快照?

  • 云有多大?[关闭]

  • EC2 映像启动

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve