Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 装载时aws efs连接超时_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

Amazon web services 装载时aws efs连接超时

Amazon web services 装载时aws efs连接超时,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我将按照教程在AWS EC2实例上安装efs,但当Iam执行mount命令时 sudo mount -t nfs4 -o vers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).[EFS-ID].efs.[region].amazonaws.com:/ efs 我每次都要暂停连接 mount.nfs4: Connection timed out 这里可能有什么问题 提前谢谢

我将按照教程在AWS EC2实例上安装efs,但当Iam执行mount命令时

sudo mount -t nfs4 -o vers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).[EFS-ID].efs.[region].amazonaws.com:/ efs
我每次都要暂停连接

mount.nfs4: Connection timed out
这里可能有什么问题


提前谢谢

将NFS类型和端口2049添加到运行EC2实例和EFS的安全组的入站。它对我有用


Bao

我发现这里接受的答案是不正确和不安全的,Bao上面的答案非常接近-除了您的EC2(装载目标)安全组不需要NFS入站。您只需要为您的EC2分配一个安全组(即使没有规则),这样您的EFS安全组就可以限制在该安全组内。。。你知道,为了安全!以下是我发现有效的方法:

  • 为EC2实例创建新的安全组。将其命名为EFS目标,并将所有规则留空
  • 为EFS装载创建新的安全组。将其命名为
    EFS Mount
    ,并在其中添加NFS的
    inbound
    规则。将此规则的源设置为您在上面创建的
    EFS目标
    安全组。这将EFS限制为只能连接到分配了
    EFS装载
    安全组的EC2实例(见下文)。如果您不担心这一点,您可以从源代码下拉列表中选择“Any”,它也可以正常工作,无需增加安全级别
  • 转到EC2控制台,并将
    EFS Target
    组添加到EC2实例中,假设您正在添加额外的安全性
  • 转到EFS控制台,选择您的EFS并选择管理文件系统访问
    • 对于每个EFS装载目标(可用性区域),您需要添加
      EFS装载
      安全组并删除VPC默认组(如果您还没有)
  • AWS文档中的mount命令现在应该可以工作了

我不喜欢他们在EC2作为挂载目标方面混合了当地语言,但EFS对每个可用区域都有单独的挂载目标。使他们的文档非常混乱,但是按照上面的步骤,我可以在Ubuntu服务器上安全地安装EFS。

我也遇到了同样的问题,并且按照Amazon AWS指南,它在我的一台服务器上工作,但另一台服务器不想安装EFS卷。通过分析本地服务器消息日志,我发现即使关联的安全组设置为允许任何传出流量(在任何端口、任何外部地址等),传出TCP流量也被阻止。在安全组上设置允许从EC2主机到端口2049上EFS服务的TCP连接的规则没有任何效果,而在本地iptable防火墙上设置特定规则得到了作业并解决了问题。我不明白为什么会有这种差异,但这对我来说是有效的。据我所知,不应触碰本地iptables fw,它应直接从AWS控制台从SG获取规则。

这里有一个不同的答案,因为我遇到了一个非常类似的错误,并且没有一个答案适合

我试图像下面这样装载NFS(在我的例子中EKS代表我这样做,但我在worker节点中手动测试了相同的命令,结果相同):

[root@host~]#mount-t nfs fs-abc1234.efs.us-east-1.amazonaws.com:/persistentcolumes/mnt/test
输出为:
mount.nfs:连接超时

当我尝试使用相同的命令,但使用
/
作为路径时:

[root@host~]#mount-tfs fs-abc1234.efs.us-east-1.amazonaws.com://mnt/test
它就像一个符咒

我真的不明白一条可能的错误或丢失的路径怎么会导致
超时
类错误,但这是唯一可以解决问题的方法,所有的网络配置都保持不变


当我使用EKS/Kubernetes时,我决定挂载起作用的
/
,然后使用来更改容器配置中的卷挂载点。

您是否确保在此步骤中已附加安全组@error2007s感谢您指出,似乎我没有添加默认的安全组,因此连接超时。请将我的答案标记为正确。感谢您您是否能够从您的浏览器(EC2实例外部。仅从您的普通计算机?)加载站点?我不能怀疑AWS服务器已关闭?@user1709076此错误是由于efs和EC2之间没有通信造成的。解决方案是将efs和ec2添加到同一个安全组中,并允许所有通信量,或者在安全组中打开端口2049。这是正确的答案。在EC2实例安全组中添加类型NFS(已配置为端口2049),其中包含EFS所在的安全组的源,EFS将开始工作。按照上述答案中的建议公开端口22是不必要的,在很多情况下不是一个好主意,也不能解决问题。了不起的工作。这应该是公认的答案。这是一个很好的办法,可以让安全小组服从你的意愿。@Scott谢谢你,这是最好的答案。我建议增加TL;DR:EFS配置中的SecGroups是EFS所属的,而不是人们所认为的NFS客户端。这正是我的问题所在。似乎我们无法挂载EFS缺少的路径。
volumeMounts.subPath
适合我。非常感谢。