【问题标题】:updating all files on AWS EC2更新 AWS EC2 上的所有文件
【发布时间】:2015-05-10 23:13:10
【问题描述】:

我正在尝试确定小型公司在使用自动缩放时保持 Web 应用 EC2 实例与当前文件同步的“最佳”方式。

从我的研究来看,CloudFormation、Chef、Puppet、OpsWorks 和其他工具似乎都是这样做的工具。他们似乎都有一个不错的学习曲线,所以我希望有人能指出我正确的方向,我会学习一个。

我的初始设置是:

  • Route53
  • 1x 负载均衡器
  • 2x EC2(不同的可用区)- Apache/PHP
  • 1x ElastiCache Redis
  • 2x EC2(不同 AZ)w/MySQL
  • 通过 Google Apps 发送电子邮件
  • 通过 S3 存储客户文件/图像
  • 用于 CDN 的 CloudFront

我能看到的唯一主要挑战是版本控制/同步网络/应用服务器。我们现在很小,所以我可能只是手动更新 EBS 甚至使用 rsync,但我宁愿将它自动化并设置为自动缩放。

【问题讨论】:

  • 你看过aws.amazon.com/elasticbeanstalk。它为部署和扩展 Web 应用程序和服务提供了易于使用的服务
  • 我可以控制操作系统和其他东西吗?如果我需要更新 OpenSSL 并将该更新部署到所有服务器,我可以这样做吗?或者我修复了 PHP 中的一个主要错误,我可以更新当前正在运行的实例和未来实例上的所有文件?

标签: amazon-web-services amazon-ec2 autoscaling


【解决方案1】:

这个问题可能过于宽泛,可能已经结束,但让我给你一些想法。

  • 为什么不使用 RDS for MySQL?
  • 您需要考虑如何制作和推广磁盘映像。在云世界中,您不希望rsync 在服务器之间处理一堆文件。当您准备好发布一组修改后的代码时,只需从您的暂存环境中制作 am 映像,基于该映像在您的 ELB 中启动新的 EC2 实例,然后关闭旧实例。如果您需要与数据库架构更改进行协调,您可能会有一些不同的部署顺序,但这是一种非常简单的方法。
  • 您仍应设法使用您提到的工具来自动化您的一些活动。你不需要一次做这一切。只需在您的流程中找出您想要自动化的手动部分并执行它。

【讨论】:

  • 我已经知道了。我只是不知道自动化它的最佳方法是什么。 Beanstalk 看起来最简单,但我不知道我有多少控制权。我可以更新操作系统吗?我可以更新 apache、iptables 等并推送到所有需要它的实例吗?那么新实例也会随新更新一起启动吗?显然,我不希望我的所有 EC2 实例都获得所有更新,因为我正在为不同的事物(如 MySQL)运行不同的实例。我没有使用 RDS,因为它的速度慢了 10 倍,而且复制很容易设置。我最终可能会使用 Percona/Galera。它也更贵。
  • @CalebPitman 你真的进入了配置管理。我通常使用一个基础 AMI,其中包含服务器级配置,包括 Apache 配置等。如果我需要在这个级别进行更改(即 Apache、包更新等),我会在这个基础 AMI 上管理它们。然后,我将在此之上部署应用程序构建以制作基于应用程序的 AMI。可能有数百种方法可以做到这一点,每种方法都有自己的优点/缺点。为什么你认为 RDS 慢了 10 倍?基于什么指标?您是否使用了正确的实例类型等。现在,如果您使用自定义 MySQL,则无法使用 RDS。
  • @CalebPitman 但是,我会感到震惊的是,为应用程序的需求正确配置的典型 RDS 实例将比 EC2 上安装的 MySQL 慢 10 倍(因此需要使用更慢的 EBS 支持持久性存储)。您通常不需要考虑配置 iptables 或其他主机级防火墙,因为您会为此使用 AWS 安全组配置。
  • 对于 2-3GB 数据库和 5-7m 行,仅在 RDS 上的完整数据库导入无法以 1k 预留 IOPS(额外 $100/月)完成。使用 EBS 通用 SSD 的 EC2 实例大约在 10-15 分钟内完成。在这两种情况下,我都使用了 xlarge 实例。我“按原样”测试,然后在配置 my.cnf 后进行测试。我对一个 5m 行的表运行了几十个不同的查询,RDS 总是慢 10 倍(查询本身;不涉及延迟)。 RDS 仍然很快(0.08 秒),但与 0.008 或 0.0008 相比,这是一个巨大的差异)。为 RDS 支付更多的钱只是为了“轻松”复制似乎是一种浪费。
  • 我看到 AWS CodeDeploy 似乎非常适合更新代码,但我还需要管理服务器软件。如果我需要更新 Web 应用程序防火墙、apache 配置、安装入侵检测系统或从 CentOS 6.4 升级到 6.5,我真的不想手动创建 AMI,然后手动启动 10 个实例。也许这是最简单的方法......但现在。我认为 CloudFormation 就是为了做到这一点,但如果不花大量时间研究它就不清楚。
猜你喜欢
  • 2022-06-22
  • 2016-03-11
  • 1970-01-01
  • 2018-07-23
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
相关资源
最近更新 更多