跨账号不同VPC通过Transit Gateway用DNS挂载EFS的方案咨询
跨账号EFS统一DNS挂载解决方案
用Route 53基于可用区的路由实现统一域名解析
既然账号间托管区授权没问题,直接在Route 53里给efs.example.com创建记录集,选基于位置的路由类型。给每个可用区单独加一条规则,匹配EC2所在的AZ位置,然后指向对应AZ的EFS挂载目标域名(比如us-east-1a的挂载目标是fs-xxxx.us-east-1a.efs.us-east-1.amazonaws.com)。这样不同AZ的EC2查这个域名时,会自动拿到对应区域的挂载目标地址,不用分多个子域名。借助EFS区域根域名+跨账号DNS授权实现自动适配
EFS的区域根域名(比如fs-xxxx.efs.us-east-1.amazonaws.com)本身支持自动解析到EC2所在AZ的挂载目标,但跨账号默认解析不了。你可以在Route 53里把efs.example.com设为这个根域名的CNAME,同时确保两个账号的VPC都开启了enableDnsHostnames和enableDnsSupport,再通过托管区授权让目标账号VPC能解析这个CNAME对应的EFS域名。如果跨账号直接解析根域名不行,就用上面的AZ路由方案兜底。实例侧自动适配方案(无需额外DNS配置)
要是不想折腾DNS规则,也可以在EC2的用户数据或启动脚本里,用元数据接口获取当前实例的可用区:AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)然后拼接成对应AZ的EFS挂载域名,再执行挂载命令:
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport ${AZ}.fs-xxxx.efs.us-east-1.amazonaws.com:/ /mnt/efs这种方式不用统一域名,但能自动匹配当前AZ的挂载目标,也不用手动写IP。
内容的提问来源于stack exchange,提问作者Darren
相关产品推荐
相关产品推荐

