演练:设置 Apache Web 服务器并为 Amazon EFS 文件提供服务 - Amazon Elastic File System

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

演练:设置 Apache Web 服务器并为 Amazon EFS 文件提供服务

您可能有运行 Apache Web 服务器的 EC2 实例,为存储在 Amazon EFS 文件系统上的文件提供提供。它可以是一个 EC2 实例,或者,如果您的应用程序需要,您也可以有多个 EC2 实例,为您的 Amazon EFS 文件系统中的文件提供服务。下面的过程描述了具体操作步骤。

注意

对于这两个过程,您将在美国西部(俄勒冈州)区域(us-west-2)中创建所有资源。

提供文件的单个 EC2 实例

按照以下步骤在一个 EC2 实例上设置 Apache Web 服务器,以便为您在 Amazon EFS 文件系统中创建的文件提供服务。

  1. 按照入门练习中的步骤操作,以便您具有包含以下内容的可正常工作的配置:

    • Amazon EFS 文件系统

    • EC2 实例

    • 文件系统挂载在 EC2 实例上

    有关说明,请参阅Amazon Elastic File System 入门。在执行这些步骤时,请记下以下内容:

    • EC2 实例的公有 DNS 名称。

    • 在启动 EC2 实例的同一可用区中创建的挂载目标的公有 DNS 名称。

  2. (可选) 您可以选择从入门练习中创建的挂载点卸载文件系统。

    $ sudo umount ~/efs-mount-point

    在本演练中,您将为文件系统创建另一个挂载点。

  3. 在您的 EC2 实例上,安装 Apache Web 服务器并进行如下配置:

    1. 连接到 EC2 实例并安装 Apache Web 服务器。

      $ sudo yum -y install httpd
    2. 启动 服务。

      $ sudo service httpd start
    3. 创建挂载点。

      首先请注意,DocumentRoot 文件中的 /etc/httpd/conf/httpd.conf 指向 /var/www/html (DocumentRoot "/var/www/html")。

      您将 Amazon EFS 文件系统挂载在文档根目录下的子目录中。

      /var/www/html 下创建一个名为 efs-mount-point 的子目录,用作文件系统的挂载点。

      $ sudo mkdir /var/www/html/efs-mount-point

    4. 使用以下命令挂载您的 Amazon EFS 文件系统。将 file-system-id 替换为文件系统 ID。

      $ sudo mount -t efs file-system-id:/ /var/www/html/efs-mount-point
  4. 测试设置。

    1. 在入门练习中创建的 EC2 实例安全组中添加规则,以允许 TCP 端口 80 上来自任何位置的 HTTP 流量。

      添加规则后,EC2 实例安全组将具有以下入站规则。

      屏幕截图显示为 EC2 实例设置的入站规则。

      有关说明,请参阅使用控制台创建安全组

    2. 创建示例 html 文件。

      1. 将目录更改为挂载点。

        $ cd /var/www/html/efs-mount-point
      2. 创建一个名为 sampledir 的子目录并更改所有权。

        $ sudo mkdir sampledir $ sudo chown ec2-user sampledir $ sudo chmod -R o+r sampledir

        更改目录,以便可以在 sampledir 子目录中创建文件。

        $ cd sampledir
      3. 创建示例 hello.html 文件。

        $ echo "<html><h1>Hello from Amazon EFS</h1></html>" > hello.html
    3. 打开浏览器窗口并输入访问该文件的 URL (它是 EC2 实例的公有 DNS 名称,后跟文件名)。例如:

      http://EC2-instance-public-DNS/efs-mount-point/sampledir/hello.html

    现在,您正在为存储在 Amazon EFS 文件系统上的网页提供服务。

注意

此设置不会将 EC2 实例配置为在引导时自动启动 Web 服务器(httpd),也不会在引导时挂载文件系统。在下一个演练中,您将创建一个启动配置来进行这种设置。

提供文件服务的多个 EC2 实例

按照以下步骤从多个 EC2 实例中的 Amazon EFS 文件系统提供相同的内容,以提高可扩展性或可用性。

  1. 按照快速创建具有推荐设置的文件系统(控制台)练习中的步骤操作,以便创建并测试 Amazon EFS 文件系统。

    重要

    对于本演练,您不使用在入门练习中创建的 EC2 实例,而是启动新的 EC2 实例。

  2. 使用以下步骤在 VPC 中创建负载均衡器。

    1. 定义负载均衡器

      基本配置部分中,选择您的 VPC,您还会在其中创建 EC2 实例以挂载文件系统。

      选择子网部分中,选择所有可用子网。有关详细信息,请参阅下一节中的 cloud-config 脚本。

    2. 分配安全组

      为负载均衡器创建一个新安全组,以允许从任何位置通过端口 80 进行 HTTP 访问权限,如下所示:

      • 类型:HTTP

      • 协议:TCP

      • 端口范围:80

      • 源:任何位置(0.0.0.0/0)

      注意

      一切就绪后,您还可以更新 EC2 实例安全组入站规则访问,以便仅允许来自负载均衡器的 HTTP 流量。

    3. 配置运行状况检查

      Ping 路径值设置为 /efs-mount-point/test.htmlefs-mount-point 是您在其中挂载文件系统的子目录。在此过程的稍后步骤中您要向其中添加 test.html 页面。

    注意

    请勿添加任何 EC2 实例。稍后,您将会创建 Auto Scaling 组,并在其中启动 EC2 实例和指定该负载均衡器。

    有关创建负载均衡器的说明,请参阅《弹性负载均衡用户指南》中的弹性负载均衡入门

创建包含两个 EC2 实例的 Auto Scaling 组。首先,您将创建一个描述实例的启动配置。然后,您可以通过指定启动配置来创建 Auto Scaling 组。以下步骤提供了您为从 Amazon EC2 控制台创建自动扩缩组而指定的配置信息。

  1. 从左侧导航窗格的 Auto Scaling 下面选择启动配置

  2. 选择创建 Auto Scaling 组以启动向导。

  3. 选择 Create launch configuration(创建启动配置)。

  4. 快速启动中,选择最新版本的 Amazon Linux 2 AMI。这是您在入门练习的创建您的 EFS 文件系统并启动您的 EC2 实例中使用的同一 AMI。

  5. 高级部分中,执行以下操作:

    • 对于 IP 地址类型,请选择向每个实例分配公有 IP 地址

    • 用户数据框中,复制/粘贴以下脚本。

      您必须通过提供 file-system-idaws-region 的值来更新脚本 (如果您已按照入门练习操作,则已经在 us-west-2 区域创建了文件系统)。

      在脚本中,注意以下方面:

      • 该脚本会安装 NFS 客户端和 Apache Web 服务器。

      • echo 命令在 /etc/fstab 文件中写入以下条目,以指定文件系统的 DNS 名称及其挂载子目录。此条目确保在每次系统重启后都挂载该文件。请注意,文件系统的 DNS 名称是动态构建的。有关更多信息,请参阅 使用 DNS 名称在 Amazon EC2 上挂载

        file-system-ID.efs.aws-region.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults
      • 创建 efs-mount-point 子目录并在其中挂载文件系统。

      • 创建 test.html 页面,以便 ELB 运行状况检查可以找到该文件(在创建负载均衡器时,您将该文件指定为 Ping 点)。

      有关用户数据脚本的更多信息,请参阅实例元数据和用户数据

      #cloud-config package_upgrade: true packages: - nfs-utils - httpd runcmd: - echo "$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).file-system-id.efs.aws-region.amazonaws.com:/ /var/www/html/efs-mount-point nfs4 defaults" >> /etc/fstab - mkdir /var/www/html/efs-mount-point - mount -a - touch /var/www/html/efs-mount-point/test.html - service httpd start - chkconfig httpd on
  6. 对于分配安全组,请选择选择一个现有的安全组,然后选择您为 EC2 实例创建的安全组。

  7. 现在,使用以下信息配置自动扩缩组的详细信息。

    1. 对于 Group size (组大小),选择 Start with 2 instances。您将创建两个 EC2 实例。

    2. Network (网络) 列表中选择您的 VPC。

    3. 选择在上一步中创建启动配置时,在用户数据脚本中指定挂载目标 ID 时使用的同一可用区中的子网。

    4. 高级详细信息部分中

      1. 对于负载均衡,请选择从弹性负载均衡器接收流量,然后选择您为本练习创建的负载均衡器。

      2. 对于运行状况检查类型,请选择 ELB

  8. 按照《Amazon EC2 Auto Scaling 用户指南》中的说明,在设置具有扩展和负载均衡功能的应用程中创建自动扩缩组。使用上述表格中的信息 (如果适用)。

  9. 成功创建 Auto Scaling 组后,您将具有两个安装了 nfs-utils 和 Apache Web 服务器的 EC2 实例。在每个实例上,确认您具有已挂载 Amazon EFS 文件系统的 /var/www/html/efs-mount-point 子目录。有关连接到 EC2 实例的说明,请参阅 A mazon EC2 用户指南中的连接到您的 Linux 实例

    注意

    如果在启动 Amazon EC2 实例时选择 Amazon Linux AMI 2016.03.0 Amazon Linux AMI,则不需要安装 nfs-utils,因为它已默认包含在此 AMI 中。

  10. 创建示例页面 (index.html)。

    1. 更改目录。

      $ cd /var/www/html/efs-mount-point
    2. sampledir 创建一个子目录并更改所有权。然后更改目录,以便可以在 sampledir 子目录中创建文件。如果您已按照前面的 提供文件的单个 EC2 实例 操作,则您已经创建了 sampledir 子目录,因此,可以跳过该步骤。

      $ sudo mkdir sampledir $ sudo chown ec2-user sampledir $ sudo chmod -R o+r sampledir $ cd sampledir
    3. 创建示例 index.html 文件。

      $ echo "<html><h1>Hello from Amazon EFS</h1></html>" > index.html

  11. 现在,您可以测试设置。使用负载均衡器的公有 DNS 名称访问 index.html 页面。

    http://load balancer public DNS Name/efs-mount-point/sampledir/index.html

    负载均衡器向某个运行 Apache Web 服务器的 EC2 实例发送请求。然后,Web 服务器将为存储在您的 Amazon EFS 文件系统中的文件提供服务。