演练:使用 AWS Direct Connect 和 VPN 在本地创建和挂载文件系统 - Amazon Elastic File System
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

演练:使用 AWS Direct Connect 和 VPN 在本地创建和挂载文件系统

本演练使用 AWS 管理控制台在本地客户端上创建和挂载文件系统。您可以使用 AWS Direct Connect 连接或 Amazon Virtual Private Cloud (VPN) 上的连接执行此操作。

注意

不支持将 Amazon EFS 与基于 Microsoft Windows 的客户端一起使用。

在本演练中,我们假定您已具有 AWS Direct Connect 或 VPN 连接。如果没有该连接,您可以立即开始建立连接,并在建立连接后返回到本演练。有关 AWS Direct Connect 的更多信息,请参阅 AWS Direct Connect 用户指南。有关设置 VPN 连接的更多信息,请参阅 Amazon VPC 用户指南 中的 VPN 连接

如果具有 AWS Direct Connect 或 VPN 连接,请在 Amazon VPC 中创建一个 Amazon EFS 文件系统和一个挂载目标。然后,您下载并安装 amazon-efs-utils 工具。接下来,您从本地客户端中测试文件系统。最后,本演练结束时的清理步骤提供了删除这些资源的信息。

此演练在美国西部(俄勒冈)区域 (us-west-2) 创建所有这些资源。不论您使用哪个 AWS 区域,请确保使用方式一致。您的所有资源 — VPC、挂载目标和 Amazon EFS 文件系统 — 必须位于同一 AWS 区域。

注意

在某些情况下,您的本地应用程序可能需要知道 EFS 文件系统是否可用。在这些情况下,您的应用程序应能在第一个挂载点暂时不可用时指向其他挂载点 IP 地址。在这种情况下,我们建议您将两个本地客户端通过不同的可用区 (AZ) 连接到您的文件系统,以提供更高的可用性。

开始前的准备工作

您可以使用 AWS 账户的根凭证登录到控制台并尝试此练习。但是,根据 AWS Identity and Access Management (IAM) 最佳实践,建议您不要使用您的 AWS 账户的根凭证,而是在您的账户中创建一个管理员用户,并使用这些凭证来管理您的账户中的资源。有关更多信息,请参阅设置

您可以使用默认 VPC,也可以使用在您的账户中创建的自定义 VPC。对于本演练,可以使用默认的 VPC 配置。但是,如果您使用自定义 VPC,请验证以下情况:

  • Internet 网关已连接到您的 VPC。有关更多信息,请参阅 Amazon VPC 用户指南 中的 Internet 网关

  • VPC 路由表包含一个规则,以将 Internet 范围的所有流量发送到 Internet 网关。

步骤 1:创建您的 Amazon Elastic File System 资源

在该步骤中,您将创建 Amazon EFS 文件系统和挂载目标。

创建 Amazon EFS 文件系统

  1. 通过以下网址打开 Amazon EFS 控制台:https://console.amazonaws.cn/efs/

  2. 选择创建文件系统

  3. VPC 列表中选择您的默认 VPC。

  4. 选中所有可用区对应的复选框。确保它们全都选择了默认子网、自动 IP 地址和默认安全组。这些是您的挂载目标。有关更多信息,请参阅 创建挂载目标

  5. 选择 Next Step

  6. 命名您的文件系统,选择通用型以作为您的默认性能模式,然后选择下一步

  7. 选择创建文件系统

  8. 从列表中选择您的文件系统,并记下安全组值。在下一个步骤中,您需要用到此值。

您刚刚创建的文件系统具有挂载目标。每个挂载目标都具有一个关联的安全组。该安全组充当虚拟防火墙以控制网络流量。如果您在创建挂载目标时未提供安全组,Amazon EFS 则将 VPC 的默认安全组与之关联。如果您完全按照上述步骤进行操作,则挂载目标使用默认安全组。

下一步,您将向挂载目标的安全组添加一条规则,以允许入站流量进入网络文件系统 (NFS) 端口 (2049)。您可以使用 AWS 管理控制台将该规则添加到您的挂载目标在 VPC 中的安全组。

允许入站流量进入 NFS 端口

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon EC2 控制台:https://console.amazonaws.cn/ec2/

  2. 网络与安全下面,选择安全组

  3. 选择与您的文件系统关联的安全组。您在步骤 1:创建您的 Amazon Elastic File System 资源的结尾记录了该值。

  4. 在安全组列表下面显示的分页窗格中,选择入站选项卡。

  5. 选择 Edit

  6. 选择添加规则,然后选择以下类型的规则:

    • Type (类型)NFS

    • Source (源)Anywhere (任何位置)

    我们建议您仅使用任何位置源进行测试。您可以创建一个设置为本地客户端 IP 地址的自定义源,或者从客户端本身中使用控制台并选择我的 IP

    注意

    您不需要添加出站规则,因为默认出站规则允许所有出站流量。如果没有该默认出站规则,请添加一个出站规则以在 NFS 端口上打开 TCP 连接,从而将挂载目标安全组指定为目标。

步骤 2:安装 NFS 客户端

在此步骤中,安装 NFS 客户端。

在本地服务器上安装 NFS 客户端

注意

如果您需要数据在传输中加密,请使用 Amazon EFS 挂载帮助程序 amazon-efs-utils 而不是 NFS 客户端。有关安装 amazon-efs-utils 的信息,请参阅可选:加密传输中的数据 部分。

  1. 访问本地客户端的终端。

  2. 安装 NFS。

    如果您使用的是 Red Hat Linux,请使用以下命令安装 NFS。

    $ sudo yum -y install nfs-utils

    如果您使用的是 Ubuntu,请使用以下命令安装 NFS。

    $ sudo apt-get -y install nfs-common

步骤 3:在本地客户端上挂载 Amazon EFS 文件系统

创建挂载目录

  1. 使用以下命令为挂载点创建目录。

    mkdir ~/efs
  2. 选择可用区中的挂载目标的所需 IP 地址。您可以从本地 Linux 客户端中测量延迟。为此,请针对不同可用区中的 EC2 实例的 IP 地址使用基于终端的工具(如 ping)以查找具有最低延迟的实例。

  • 运行挂载命令以使用挂载目标的 IP 地址挂载文件系统。

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-IP:/ ~/efs

现已挂载 Amazon EFS 文件系统,您可以使用以下过程对其进行测试。

测试 Amazon EFS 文件系统连接

  1. 使用以下命令将目录更改为您创建的新目录。

    $ cd ~/efs
  2. 创建一个子目录,并将该子目录的所有权更改为您的 EC2 实例用户。接下来,使用以下命令导航到该新目录。

    $ sudo mkdir getting-started $ sudo chown ec2-user getting-started $ cd getting-started
  3. 使用以下命令创建一个文本文件。

    $ touch test-file.txt
  4. 使用以下命令列出目录内容。

    $ ls -al

这样,将会创建以下文件。

-rw-rw-r-- 1 username username 0 Nov 15 15:32 test-file.txt

您也可以在 /etc/fstab 文件中添加条目以自动挂载文件系统。有关更多信息,请参阅 自动挂载您的 Amazon EFS 文件系统

警告

请在自动挂载文件系统时使用 _netdev 选项,它用于指定网络文件系统。如果缺少 _netdev,您的 EC2 实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。有关更多信息,请参阅 自动挂载失败,并且实例没有响应

第 4 步:清理资源并保护您的 AWS 账户

完成本演练后,或者如果您不想探索这些演练,则应执行如下步骤以清理您的资源并保护您的 AWS 账户。

清理资源并保护您的 AWS 账户

  1. 使用以下命令卸载 Amazon EFS 文件系统。

    $ sudo umount ~/efs
  2. 通过以下网址打开 Amazon EFS 控制台:https://console.amazonaws.cn/efs/

  3. 选择要从文件系统列表中删除的 Amazon EFS 文件系统。

  4. 对于 Actions,选择 Delete file system

  5. Permanently delete file system (永久删除文件系统) 对话框中,键入要删除的 Amazon EFS 文件系统的文件系统 ID,然后选择 Delete File System (删除文件系统)

  6. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  7. 在导航窗格中,选择 Security Groups

  8. 选择您针对本演练向其中添加了规则的安全组的名称。

    警告

    不要删除您的 VPC 的默认安全组。

  9. 对于操作,请选择编辑入站规则

  10. 选择在添加的入站规则末尾的 X,然后选择保存

可选:加密传输中的数据

要加密传输中的数据,请使用 Amazon EFS 挂载帮助程序 amazon-efs-utils 而不是 NFS 客户端。

amazon-efs-utils 软件包是一个开源 Amazon EFS 工具集。amazon-efs-utils 集附带了挂载帮助程序和一些工具,这使为 Amazon EFS 加密传输中的数据变得更轻松。有关此软件包的更多信息,请参阅使用 amazon-efs-utils 工具。可以从 GitHub 中免费下载该软件包,您可以克隆该软件包的存储库从获取该软件包。

从 GitHub 中克隆 amazon-efs-utils

  1. 访问本地客户端的终端。

  2. 从终端中,使用以下命令将 amazon-efs-utils 工具从 GitHub 克隆到所选的目录中。

    git clone https://github.com/aws/efs-utils

现已具有该软件包,您可以开始进行安装了。该安装是以不同方式处理的,具体取决于本地客户端的 Linux 发行版。支持以下发行版:

  • Amazon Linux 2

  • Amazon Linux

  • Red Hat Enterprise Linux(和衍生产品,如 CentOS)7 和更新版本

  • Ubuntu 16.04 LTS 和更新版本

作为 RPM 软件包构建并安装 amazon-efs-utils

  1. 在客户端上打开一个终端,然后导航到具有从 GitHub 克隆的 amazon-efs-utils 软件包的目录。

  2. 使用以下命令构建该软件包。

    make rpm
    注意

    如果尚未安装 rpm-builder 软件包,请使用以下命令进行安装。

    sudo yum -y install rpm-build
  3. 使用以下命令安装该软件包。

    sudo yum -y install build/amazon-efs-utils*rpm

将 amazon-efs-utils 作为 deb 软件包进行构建并安装

  1. 在客户端上打开一个终端,然后导航到具有从 GitHub 克隆的 amazon-efs-utils 软件包的目录。

  2. 使用以下命令构建该软件包。

    ./build-deb.sh
  3. 使用以下命令安装该软件包。

    sudo apt-get install build/amazon-efs-utils*deb

安装该软件包后,请配置 amazon-efs-utils 以在具有 AWS Direct Connect 或 VPN 的 AWS 区域中使用。

配置 amazon-efs-utils 以在您的 AWS 区域中使用

  1. 使用所选的文本编辑器打开 /etc/amazon/efs/efs-utils.conf 以进行编辑。

  2. 查找 “dns_name_format = {fs_id}.efs.{region}.amazonaws.com” 行。

  3. 使用您的 AWS 区域的 ID 更改 {region},例如,us-west-2

要在本地客户端上挂载 EFS 文件系统,请先在本地 Linux 客户端上打开终端。要挂载系统,您需要使用文件系统 ID、挂载目标 IP 地址以及文件系统的 AWS 区域。如果您为文件系统创建了多个挂载目标,则可选择其中任一项。

在具有该信息时,您可以使用三个步骤挂载文件系统:

创建挂载目录

  1. 使用以下命令为挂载点创建目录。

    mkdir ~/efs
  2. 选择可用区中的挂载目标的所需 IP 地址。您可以从本地 Linux 客户端中测量延迟。为此,请针对不同可用区中的 EC2 实例的 IP 地址使用基于终端的工具(如 ping)以查找具有最低延迟的实例。

更新 /etc/hosts

  • 在本地 /etc/hosts 文件中添加一个具有文件系统 ID 和挂载目标 IP 地址的条目,格式如下所示。

    mount-target-IP-Address file-system-ID.efs.region.amazonaws.com
    192.0.2.0 fs-12345678.efs.us-west-2.amazonaws.com

创建挂载目录

  1. 使用以下命令为挂载点创建目录。

    mkdir ~/efs
  2. 运行 mount 命令以挂载文件系统。

    sudo mount -t efs fs-12345678 ~/efs

    如果要使用传输中的数据加密,mount 命令类似于以下内容。

    sudo mount -t efs -o tls fs-12345678 ~/efs