亚马逊AWS官方博客

跨账户分享共享文件存储指南(一)— VPC Peering 和 Transit Gateway Sharing

在 AWS 上的企业用户通常需要高性能、可扩展的共享文件存储解决方案,以支持基于 Windows 和 Linux 的分布式系统。由于多方面的原因,企业客户通常会同时使用多个 AWS 账户,来进行更好的管理和业务隔离。尽管这些隔离措施十分必要,但在实操中,文件存储很可能也需要方便的共享功能。您可以首先考虑使用 2023 年 12 月宣布的 VPC 共享功能。VPC 共享允许资源所有者(“所有者账户”)与其组织中的其他账户(“参与者账户”)共享一个或多个 VPC 子网。这将允许参与者账户直接在共享 VPC 中创建资源访问文件系统。关于 VPC 共享如何实现,您可以参考此文档链接

或者,您可以考虑通过打通网络的方式进行共享文件存储的跨帐户分享。本文将讨论如何通过以下两种方式实现共享文件存储的跨账户网络打通:

  • VPC Peering
  • Transit Gateway

共享文件存储类型

Amazon Elastic File System(EFS)提供无服务器、完全弹性的文件存储,让您无需预置或管理存储容量和性能即可共享文件数据。Amazon EFS 通过 NFSv4 协议,使用传统文件权限模型、文件锁定和分层目录结构。Amazon EC2 实例可以跨可用区和区域访问 EFS 文件系统。

Amazon FSx 让您可以在云中启动、运行和扩展功能丰富的高性能文件系统。该产品以其可靠性、安全性、可扩展性和丰富的功能支持广泛的工作负载。您可以在四个广泛使用的文件系统之间进行选择:NetApp ONTAP、OpenZFS、Windows File Server 和 Lustre。这种选择通常基于您对给定文件系统的熟悉程度,或者将文件系统的功能集、性能配置文件和数据管理功能与工作负载的要求相匹配。

FSx for OpenZFS和FSx for NetApp ONTAP 可以在创建时选择将终端节点 IP 配置为 VPC 的网段范围或单独的 198.19.x.0/24 浮动 IP 范围。这将可以更好地避免网段 IP 范围重复的问题。此外目前多可用区部署的文件系统需要使用 Transit Gateway 进行共享,不支持使用 VPC Peering 进行共享,详细信息可以参考此文档链接

通过 VPC Peering 实现共享

VPC Peering 是两个 VPC 之间的网络连接。对等 VPC 中的资源可以相互通信,如同位于同一网络中。您可以在自己的 VPC 之间,与其他 AWS 账户中的 VPC 或其他 AWS 区域中的 VPC 之间创建 VPC 对等连接。对等 VPC 之间的流量不会通过公共互联网传输。关于如何创建 VPC Peering 连接,请参考此文档链接

除了 FSx for OpenZFS 和 FSx for NetApp ONTAP 之外的共享文件存储都支持使用 VPC Peering 进行共享。

对于 EFS,请选择“通过 IP 挂载“的方式:

由于 EFS 在多个可用区中具有多个不同 IP 地址,要保证客户端访问 EFS 时总是在相同的可用区,或者需要使用 DNS 名、efs-utils 或者 efs-csi-driver 的话,可以参考“使用 Route53 Hosted Zone 简化 EFS cross-account 挂载”一文。

对于 FSx for Lustre,请通过 FSx for Lustred 的 ENI IP 地址进行挂载:

通过 Transit Gateway 实现共享

Transit Gateway 是一种网络中转中心服务,可以用来互连 VPC 和本地网络。Transit Gateway 通过挂载来联通多个 VPC。

要在不同账户间共享 Transit Gateway,需要通过 Resource Access Manager 创建一个资源共享。首先,来到 Resource Access Manager 选择创建资源共享。在第一步中,选择资源类型为 Transit Gateway,勾选并进行到下一步:

第三步中可以选择分享给特定账户,或者在 Organization 中选择(如果适用)。勾选分享的目标账户后进行到下一步并创建资源共享:

资源共享创建完成之后,回到 VPC 控制台,应该可以看到 Transit Gateway 的分享已经处于绿色关联状态:

资源共享完成后就可以在主账户和目标账户分别进行打通文件系统的网络访问了。示例架构如下:

示例路由:

FSx VPC 路由表
Destination Target
10.0.0.0/16 local
192.168.0.0/16 tgw-xxx
Participant VPC 路由表
Destination Target
192.168.0.0/16 local
10.0.0.0/16 tgw-xxx

198.19.x.0/24

(如果使用 VPC 范围外的浮动 IP)

tgw-xxx
Transit Gateway 路由表
CIDR Attachment ID
192.168.0.0/16 tgw-attach-xxx / FSx VPC
10.0.0.0/16 tgw-attach-xxx / Participant VPC

198.19.x.0/24

(如果使用 VPC 范围外的浮动 IP)

tgw-attach-xxx / FSx VPC

在 Transit Gateway 设置完成之后,在 Participant VPC 中使用 IP 进行 FSx for OpenZFS 和 FSx for NetApp ONTAP 的挂载。对于 FSx for OpenZFS,使用 ENI 的 IP 进行挂载:

对于 FSx for NetApp ONTAP,请在以下控制台页面使用 SVM 提供的挂载 IP,或者参考此文档链接中提供的其他获取挂载 IP 的方式:

总结

在这篇博客中,我们向您介绍了如何使用 VPC Peering 和 Transit Gateway Sharing 将您的共享文件存储进行跨账户共享。

在下一篇博客中,我们将介绍如何使用 Route53 Hosted Zone 简化 EFS 跨账户挂载的技巧。

本篇作者

柯逸楠

亚马逊云科技解决方案架构师,具有丰富的数据分析和挖掘经验,负责基于 AWS 云平台的解决方案咨询和设计。

王志达

亚马逊云科技解决方案架构师,主要负责基础架构如计算、存储的云端设计、改造和优化方案。有多年存储、容器平台和 Devops 运维经验。