演练:设置 Amazon EFS 服务器并提供Amazon EFS 文件 - Amazon Elastic File System
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

演练:设置 Amazon EFS 服务器并提供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 文件系统安装到文档根目录下的子目录中。

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

      $ 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 实例设置的入站规则的屏幕截图。

      有关说明,请参阅 使用 Amazon Web Services Management Console创建安全组

    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. 按照步骤 1:创建您的 Amazon EFS 文件系统练习中的步骤创建和测试 Amazon EFS 文件系统。

    重要

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

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

    1. 定义负载均衡器

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

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

    2. 分配安全组

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

      • Type:HTTP

      • Protocol:TCP

      • Port Range:80

      • Source:Anywhere (0.0.0.0/0)

      注意

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

    3. 配置运行状况检查

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

    注意

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

    有关创建负载均衡器的说明,请参见 Elastic Load Balan cing 用户指南中的 Elastic Load Bal ancing 入门

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

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

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

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

  4. 快速入门中,选择最新版本的亚马逊 Linux 2 AMI。这是您在入门练习的步骤 2:创建您的 EC2 资源并启动您的 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 点)。

      有关用户数据脚本的更多信息,请参见 Amazon EC2 用户指南(适用于 Linux 实例)中的添加用户数据

      #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. 现在,使用以下信息配置 Auto Scaling 组的详细信息。

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

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

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

    4. 在 “高级详细信息” 部分中

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

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

  8. 按照 Amazon EC2 Auto Scaling 用户指南中的设置扩展和负载平衡应用程序中的说明创建 Auto Scaling 组。使用上述表格中的信息 (如果适用)。

  9. 成功创建 Auto Scaling 组后,您将具有两个安装了 nfs-utils 和 Apache Web 服务器的 EC2 实例。在每个实例上,验证您是否安装了装有 Amazon EFS 文件系统的/var/www/html/efs-mount-point子目录。有关Connect 方式,请参见 A mazon EC2 用户指南(适用于 Linux 实例)中的连接到您的 Linux 实例

    注意

    如果您在启动 Amazon EC2 实例时选择亚马逊 Linux AMI 2016.03.0 亚马逊 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 文件系统中的文件。