在 aws 中管理或管理自动缩放实例的有效方法

Posted

技术标签:

【中文标题】在 aws 中管理或管理自动缩放实例的有效方法【英文标题】:efficient way to administer or manage an auto-scaling instances in aws 【发布时间】:2013-04-19 01:52:52 【问题描述】:

作为一名系统管理员,我正在寻找一种有效的方法或最佳实践来管理具有自动缩放功能的 ec2 实例。

您如何管理自动化以下场景:(我们的环境正在运行自动缩放、Elastic Load Balancing 和 cloudwatch)

    出于安全原因,为服务器的最新版本的 rpm 软件包打补丁?喜欢(是的,更新/升级) 像更改 httpd.conf 一样更改 Apache 服务器的配置并将其应用于自动缩放组中的所有实例? 如何将最新的代码部署到您的应用到服务器上,同时减少生产中断? 您如何使用 puppet 或 chef 来自动化您的管理任务?

如果您能分享有关如何使用 aws 自动化管理任务的任何内容,我将不胜感激

【问题讨论】:

你是怎么做到的。有你想要的答案吗? 【参考方案1】:

查看 Amazon OpsWorks,它是基于 Chef 的新开发运营工具,适用于 Amazon Web Services。

它使您能够在不同层(负载均衡器、应用服务器、数据库...)的实例上运行自定义 Chef 配方,以及管理来自各种源存储库(Git、颠覆..)。

它支持基于负载的自动扩展(就像您已经在使用的自动扩展),以及基于时间的自动扩展,这在标准 EC2 自动扩展中实现起来更加复杂。

这是一项相对年轻的服务,并非所有功能都已经可用,但它可能对您有用。

【讨论】:

嗨,有什么其他方法可以在不使用 opsworks 的情况下完成我的场景吗? 您可以使用标准的 EC2 自动扩展。您可以创建新版本的新启动配置,它将开始启动您的新版本,直到它替换旧配置。新版本可以由新的 AMI、不同的用户数据或 Puppet/Chef 配置来定义。【参考方案2】:

为服务器的最新版本的 rpm 包打补丁 安全原因?喜欢(是的更新/升级)

您可以使用 puppet 或 chef 创建一个 cron 作业来为您处理这个问题(cron 将以最基本的形式通过 bash 脚本下载和/或安装更新)。您可能希望自动升级,或者只是通过电子邮件通知管理员,以便在应用更新之前进行评估。

对 Apache 服务器进行配置更改,就像更改 httpd.conf 并将其应用于自动缩放中的所有实例 组?

我通常通过我的 Puppet 清单来处理我的所有配置文件。您可以设置每个 EC2 实例以从 Puppet 服务器中提取更新,然后您可以按需推出更改。此过程的一部分应该是更新存储在您的 AutoScale 组中的 AMI(这是通过 Amazon 命令行工具完成的)。

你如何将最新的代码部署到你的应用程序到服务器上? 生产中断?

首先在 staging 中测试它!还有一个巧妙的技巧是版本化部署,因此每次进行部署时,它都会获得自己的文件夹(/var/www/v1 /var/www/v2 等),一旦您确认部署成功,您只需更新符号链接指向最新版本(/var/www/current 指向 /var/www/v2)。

OpsWorks 会为您处理所有此类事情,因此如果您不想自己做所有这些事情,您可以研究一下。

您如何使用 puppet 或 chef 来自动化您的管理任务?

您可以使用 Chef 或 Puppet 做各种事情,而他们不能(或您不知道如何做)的任何事情都可以通过您从 Chef 或 Puppet 调用的 bash/python 脚本来完成。

我通常会做一些事情,比如安装包、构建自定义包、设置权限、下载东西、启动服务、管理配置文件、设置 cron 作业等

如果您能分享有关如何使用 aws 自动化管理任务的任何内容,我将不胜感激

查看 CloudFormation。这可以帮助您通过配置文件设置所有服务器和相关服务(想想 EC2、LBS、CloudWatch),从而帮助您自动化整个堆栈(不仅仅是 EC2 的操作系统)。

【讨论】:

Drew,有一个关于自动缩放和 puppet 的快速问题。我的基础设施由 puppet 管理。我在 S3 中更新了最新版本的 tarball,然后有一个简单的脚本在引导期间拉取和替换最新版本(rc.local)。我还希望自动缩放的实例向 puppetmaster 注册,但不确定如何处理主机名和证书签名。考虑过检查现有主机名并增加主机名,然后向 puppetmaster 注册,但是有没有正确/更好的方法呢?我使用自动登录 master 并允许 *.domain.com。提前致谢 听起来像是一个新问题,而不是对此答案的评论?

以上是关于在 aws 中管理或管理自动缩放实例的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

AWS Auto Scaling - 带有 2 个固定实例

有啥方法可以编辑用于 AWS 中自动缩放的 AMI?

AWS - 重建 Autoscale 组中的所有实例

AWS - 自动缩放未按指定启动/终止实例

在 AWS 中自动化自动缩放

AWS cloudwatch 自定义指标作为弹性 beantalk 自动缩放触发器