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 / 问题 / 567499
Accepted
Dan
Dan
Asked: 2014-01-16 09:54:47 +0800 CST2014-01-16 09:54:47 +0800 CST 2014-01-16 09:54:47 +0800 CST

AWS EC2 实例 Auto Scaling 混淆

  • 772

所以首先我对 AWS 完全陌生,所以请多多包涵。

我已经有一个实例运行了几个月,现在我需要自动缩放它,因为我的流量峰值越来越大,而且有时它会过载。

所以让我回顾一下我到目前为止所做的事情,你们可以告诉我我哪里出错了,我必须做些什么不同的事情。

  • 首先,我创建了一个负载均衡器,上面有我的一个主实例,称之为“实例 A”
  • 接下来,我在“实例 A”上创建了两个 CloudWatch 警报,用于监控 CPU 负载。接下来我创建了“实例 A”的图像
  • 接下来,我创建了一个链接到我新创建的 AMI 的启动配置。
  • 接下来,我创建了一个 Auto Scaling 组并将其链接到我的负载均衡器,并设置了我之前设置的两个 Scaling 警报。
  • 我将 AutoScaling 组 Min 设置为 0,Max 设置为 3,因为我只希望它在我的原始实例(实例 A)超出容量时开始启动实例。

所以基本上我希望我的原始实例始终运行。然后,当它开始超出容量时,我希望 Auto Scaling 组开始启动实例并让负载均衡器在它们之间分配负载。我在这里的想法合理吗?

其他重要问题。

当我对原始实例进行代码和数据更改时,是否必须重新制作启动配置使用的图像?

DNS 名称和 IP 需要关闭什么?我目前正在使用 Route 53,我是否将这一点指向我的负载均衡器,仅此而已?

多谢你们!

amazon-ec2
  • 1 1 个回答
  • 3288 Views

1 个回答

  • Voted
  1. Best Answer
    Jaap Haagmans
    2014-01-18T07:59:39+08:002014-01-18T07:59:39+08:00

    让我们来看看你的问题。

    所以基本上我希望我的原始实例始终运行。然后,当它开始超出容量时,我希望 Auto Scaling 组开始启动实例并让负载均衡器在它们之间分配负载。我在这里的想法合理吗?

    我会说是的,但我确实有一些保留意见。如果我理解正确,您已将“主”实例放置在 Auto Scaling 组之外。从理论上讲,这将确保 Auto Scaling 不会杀死您的原始实例。我想提几点:

    • 您没有充分利用 Auto Scaling 的可能性。Auto Scaling 不仅使您的设置能够扩展,而且还可以确保限制。如果出于某种原因,您的“主”实例死亡,您的自动扩展策略将不会生效。如果您将实例保留在 amin-size为 1 的 Auto Scaling 组中,Auto Scaling 会自动替换失败的实例。
    • 在进行自动缩放时,将您的实例视为“一次性”通常是最佳实践,因为这就是您构建弹性系统的方式。不要依赖一个实例始终可用。
    • 您可以为您的 Auto Scaling 组设置终止策略,使其始终首先终止最新的实例。这将确保您的“主要”实例将被保留(只要它是健康的)。我之前的评论仍然适用。

    当我对原始实例进行代码和数据更改时,是否必须重新制作启动配置使用的图像?

    我会说不,但这更多是设计问题。您的图像应该描述您的服务器的状态,但它不应该负责代码分发。考虑这样一种情况,由于紧急错误,您必须更新您的应用程序,但您的服务器处于高负载状态。更新您的主服务器、创建一个 AMI、更新您的启动配置并关闭您的自动扩展服务器以便它们可以使用最新的 AMI 重新生成听起来像一个有吸引力的解决方案吗?我对此的回答是不(再次)。查看源代码版本控制和部署策略(例如,我 60% 的时间是 Rails 开发人员并使用gitand capistrano)。

    在某些情况下,您的方法也可以工作,并且这里有很多中间立场(我建议您也研究一下Chef脚本userdata)。我自己实际上很少使用自定义 AMI,这要归功于Chef.

    DNS 名称和 IP 需要关闭什么?我目前正在使用 Route 53,我是否将这一点指向我的负载均衡器,仅此而已?

    基本上,是的。您可以在创建 Auto Scaling 组时选择应附加到新实例的负载均衡器。我还没有将 GUI 用于 Auto Scaling,但我很确定它在某个地方。如果不是,CLI 仍然支持它。将您的 Route53 记录指向您的 ELB alias,基本上就是这样。

    对其他问题的回应(2014/02/23):

    如果您使用 Rails 进行开发,我强烈推荐Capistrano进行部署,它可以在您首选的版本控制系统(如 git)中获取应用程序的特定版本,并将其部署到特定环境中的多个服务器上。那里有很多教程,但是 Ryan Bates 的修订版(和专业版)Railscasts 关于这个主题非常简洁,尽管你需要订阅他的网站才能观看它们。大多数其他教程也会让你继续前进。使用您的 AMI 和启动脚本启动一个新服务器,该脚本会拉取您的 git 存储库的临时克隆并运行本地 Capistrano 命令以启动您的应用程序。这确保了以后,您还可以使用 Capistrano 将新版本的应用程序部署到所有正在运行的服务器上,只需一个命令。

    Capistrano 还提供了其他一些好处,包括使您能够在所有或仅一个服务器上执行特定任务并回滚部署,这很难仅使用 git 来完成。

    • 8

相关问题

  • 权限被拒绝(公钥)。从本地 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