【问题标题】:What is the best practice for a persistent LAMP on AWS?AWS 上的持久 LAMP 的最佳实践是什么?
【发布时间】:2024-05-23 14:35:02
【问题描述】:

首先让我先说我主要是一名程序员,尽管我对 Linux 和“标准”LAMP 安装有很好的工作知识。我的任务是在 Amazon Web Services (AWS) 中建立一个持久的 LAMP 环境,这比我在这方面的习惯要复杂得多。

尽管 AWS 有很好的文档记录,但我还没有找到一个清晰、明确的“最佳实践”概述来设置持久的 LAMP 环境。我按照亚马逊官方教程 (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html) 在我们的 EC2 实例上设置了 LAMP 服务器,但后来发现这些实例是“临时的”,我需要一个 EBS 才能使任何东西持久化。有趣的是,EBS(弹性块存储)并没有出现在我的管理控制台中,尽管它们在公共方面提供定价(https://aws.amazon.com/ebs/pricing/)。还是叫EBS吗?

当然,这引出了一个问题——我安装的程序(Apache、MySQL)以及它们各自的配置文件会发生什么?亚马逊肯定不希望我们每次启动时都从头重新配置我们的服务器吗?

我现在拥有的

  • 1x EC2 实例运行 Amazon Linux。我按照 Amazon 发布的“安装 LAMP”教程安装和配置了 Apache 和 MySQL。
  • 1x Route 53 托管区域(用于 DNS 路由)
  • 1x 弹性 IP 附加到 EC2 服务器

此外,似乎有一个未加密的 8GB 卷附加到 /dev/xvda,虽然我没有设置它并且除了我自己之外没有人可以访问 - 它似乎是在我征用了 EC2 - 不知道它是否持久。

我认为我需要什么

所以,这就是我认为我需要做的事情。请告诉我我是否已经离开 - 有没有更明智的选择?

  • 1x EC2 实例运行 Amazon Linux 和 Apache
  • 1x RDS for MySQL
  • 1x Route 53 托管区域
  • 1x 弹性 IP 附加到 EC2 服务器
  • 1x(EBS?S3?EFS?)用于存储 htdocs
  • 1x EC2 快照以保存服务器配置

听起来对吗?有一个更好的方法吗?非常感谢您的任何建议。亚马逊文档似乎非常擅长提供详细信息,但在解决整体战略问题方面并不出色。

【问题讨论】:

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


    【解决方案1】:
    1. 网络应用程序

      建议在Elastic Load Balancer 下有 2 个 EC2 实例,这 2 个实例位于不同的可用区以实现高可用性。更进一步更好地监控这些实例的 CPU 和带宽 - CloudWatch - 一旦你看到它们超过某个阈值,你可以自动向 ELB 添加更多实例,这就是 auto scaling。当然,就像您说的那样,您需要准备好启动服务器软件的 AMI(快照)。当负载较小时,您还需要关闭服务器 - 再次使用指标自动关闭,但您永远不应该在 2 台机器下关闭。并且不要忘记在升级软件时更新这些图像。

    2. 53 号公路

      因为您将使用 ELB,您不再需要弹性 IP,您的 Web 服务器只能具有私有 IP。在 Route 53 上,您需要将您的网站指向 ELB 的名称 - here are more details about it

    3. 数据库

      对于数据库部分,请选择 RDS for MySQL,包括多可用区部署,因此您将在不同的可用区拥有主副本和一个备用副本。

    4. EBS(磁盘)

      对于EBS 部分,您将需要使用它,它们有 3 种风格:磁性(最慢)、通用 SSD(更快)和预置 IOPS(最快)。这些是您安装在机器、Web 服务器和数据库上的磁盘。对于您应该使用 Provisioned 的数据库,以后更改它们要困难得多,而对于 Web 服务器,我们使用通用。在 AWS 控制台中,您可以在 EC2 下的 Elastic Block Store 部分找到它们。

    出现的 8G 磁盘是您创建 Linux 机器时的默认磁盘,它是通用 SSD,对于 Web 服务器来说已经足够了,但我认为您应该选择更大的磁盘,至少 50G。

    【讨论】:

    • 非常感谢 - 我需要阅读更多关于这些服务的信息,但这是所涉及的所有部分的精彩概述 - 正是我一直在寻找的那种东西。如果您还在的话,我确实有几个快速跟进的问题: 1. 8G 磁盘是否持久?和 2. 您提到关闭服务器(并在需要时安装它们) - 有没有办法,比如说,保存我的 已配置 Amazon Linux 的图像,以便我可以启动一个已经准备好的实例每次都去,还是每次我们使实例联机时都需要重新配置它?
    • 是的,8G 是持久的,但是当你从控制台启动一个新实例时,你有一个步骤 Add Storage。您可以看到磁盘,默认情况下您已选中“终止时删除”标志 - 这意味着当您终止机器时它将被删除。如果取消选中它,则可以将其附加到任何其他机器。对于安装和配置了正确软件的机器,您肯定需要创建映像,这就是自动缩放的工作原理。在 EC2 实例的控制台中,在 Actions 按钮上,您有 Image > Create Image(您可以在左侧的 AMI 子菜单中看到它)