AWS存储设置建议(php/mysql带自动缩放)



我有一个php/mysql网站,我想在AWS上部署它。最终,我会想要自动缩放(但不需要马上)。

我正在看一个基于EBS的AMI。我看到,默认情况下,当实例"终止"时,"根设备卷"会被删除。我意识到我也可以将其他EBS设备/驱动器连接到一个实例(在终止后将持续存在),但我将把大多数用户内容保存在S3中,所以我认为这没有必要。我不确定我会多久开始/停止一次,也不知道我什么时候想终止。所以这有点令人困惑。

我最困惑的是对系统的更改保存在哪里。假设我运行YUM安装或更新。是否保存在"根设备卷"中?如果我停止/启动实例,应该有更改吗?如果我设置cron作业呢?

如果我上传文件怎么样?我在一定程度上理解这取决于我把文件放在哪里,以及我是否附加了第二个EBS。假设我只是把它们放在根文件夹"/"中(未修改,但为了简单起见)。我猜它们在技术上保存在"根设备卷"中?如果我启动/停止实例,它们应该还在吗?

但是,如果我终止了一个实例,那么这些更改/上传就会丢失。但是,如果我将"根设备卷"设置为在终止时不删除,那么我可以启动一个新的实例并在那里进行更改吗?

在自动缩放方面。有人说让"根设备卷"默认删除,这样当新实例启动/关闭时,它们就不会留下不再需要的僵尸EBS卷(需要手动清理)?

这样的东西行得通吗:?

  1. 设置S3存储桶(用于共享图像上传)
  2. 设置Amazon RDS/mysql
  3. 设置DynamoDB(用于共享php会话)
  4. 启动EBS支持的AMI(保留为默认值以删除上的"根设备卷"终止)。使用yum/etc进行系统更新。通过sftp上传PHP/HTML/JS/CSS文件(例如:/var/www/HTML)。验证网站是否可以保存镜像到S3,通过DynamoDB共享会话,通过RDS访问mysql
  5. 从当前运行/配置的AMI映像中制作/克隆自己的AMI映像一用一个表示站点版本/日期等的名称保存
  6. 设置自动缩放以启动在#5中创建的图像

我最关心的是如何保存我的配置,以便1)在我需要终止实例(在使用自动缩放之前)时保存更改,2)当我准备好时,自动缩放将可以访问更改。我也不希望在所有自动缩放实例上运行相同的cron作业。

我想我对"在#4中创建我自己的AMI映像"是否基本上取代了终止时的"保存EBS根设备卷"感到困惑?我无法将我的头脑包裹在事物的图像部分与事物的存储部分之间。

当我读到人们谈论如果你使用"亚马逊Linux",那么他们每6个月部署一次更新的方式会让你很难使用,因为你被迫使用新版本的软件,我会更加困惑。这对我的自定义AMI(以及我上传的代码)有何影响?我可以在我的自定义AMI(用于安全补丁)上继续运行百胜更新,而忽略对亚马逊标准AMI的任何更改吗?什么时候百胜的方法会让我面临过时的风险?

我知道有很多事情我没有涉及(dns/静态IP/缩放度量等)。有些人没有上传文件然后创建AMI映像,而是让他们的机器在启动时从git中提取文件(我现在不介意我更手动的方法)。或者,从技术上讲,我也可以将php/html/css/js放在S3上。

很抱歉问了这么多问题。我知道我的问题可能还不完全清楚,但我只是在寻求一般的确认/建议。有太多的概念需要联系在一起。

感谢并抱歉发了这么长的帖子!

是的,如果您安装软件包、上传文件、设置cron作业等,然后停止基于EBS的实例,那么当您重新启动它时,一切都将仍然存在。因此,如果您从该实例创建AMI,然后将其用于自动缩放组,则自动缩放组的所有实例都将运行cron作业。

你的步伐看起来不错。当您创建一个AMI时,您的更改将保存在该AMI中。如果实例被终止,则可以通过AMI重新创建它。但是,自AMI创建以来对该实例所做的修改将不会保存。如果您想要备份,您需要创建一个AMI或拍摄EBS卷的快照。

如果您进行了更改并希望将其应用于自动缩放组中的所有实例,则需要创建一个新的AMI并将其应用到您的自动缩放组。

关于cron作业,我想你有两个选择:

  • 拥有一个不属于运行它们的自动缩放组的实例(并在为自动缩放组创建AMI之前禁用cron作业)
  • 做一些聪明的事情,这样只有一个自动缩放组的实例运行它们。这是我在谷歌上点击的第一个页面:https://gist.github.com/kixorz/5209217(未测试)

是的,创建自己的AMI映像基本上取代了终止时的"保存EBS根设备卷"。

EBS引导AMI是EBS根卷的EBS快照,加上一些元数据,如体系结构、内核、AMI名称、描述、块设备映射等等。

(来源:快照和AMI之间的AWS差异)

是的,您可以自动运行百胜安全更新。为了与最新的AmazonLinuxAMI完全相同,您应该运行所有的yum-updates(不仅仅是安全性)。但我不会自动运行这些。

如果我忘记回答你的一些问题,或者有些问题还不清楚,请告诉我。

最新更新