3

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

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

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

如果您有任何关于如何使用 aws 自动执行管理任务的信息,我将不胜感激

4

2 回答 2

0

查看 Amazon OpsWorks,这是一种新的基于 Chef 的用于 Amazon Web Services 的 DevOps 工具。

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

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

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

于 2013-04-25T18:18:12.853 回答
0

出于安全原因,修补服务器的最新版本的 rpm 包?喜欢(是的更新/升级)

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

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

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

您如何将最新的代码部署到您的应用程序到服务器上,同时减少生产中断?

首先在分期中进行测试!还有一个巧妙的技巧是版本化部署,因此每次进行部署时,它都会获得自己的文件夹(/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 的操作系统)。

于 2013-05-01T06:16:07.563 回答