我正在关注this教程,以便在AWS EC2实例上安装efs,但是当我执行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
这可能是什么问题?
提前致谢!
答案 0 :(得分:22)
我发现此处接受的答案不正确&不安全,宝的答案非常接近 - 除了你的EC2(挂载目标)安全组不需要NFS Inbound。您只需要为EC2分配一个安全组(即使没有规则),这样您的EFS安全组就可以限制在该安全组中......您知道,为了安全起见!这是我发现的作品:
EFS Target
,并将所有规则留空EFS Mount
,并在此处为NFS添加inbound
规则。将此规则的SOURCE设置为您在上面创建的EFS Target
安全组。这会将EFS限制为仅能够连接到已分配EFS Mount
安全组的EC2实例(请参阅下文)。如果您不担心这一点,可以从“源”下拉列表中选择“任意”,它的工作方式相同,但不会增加安全级别EFS Target
组添加到您的EC2实例,假设您要添加额外的安全性EFS Mount
安全组并删除VPC默认组(如果您还没有)我不喜欢他们在EC2作为装载目标方面如何混合白话,但EFS也为每个可用区域提供了单独的装载目标。使他们的文档非常混乱,但按照上述步骤允许我在Ubuntu服务器上安全地安装EFS。
答案 1 :(得分:16)
将NFS和端口2049的类型添加到运行EC2实例和EFS的安全组的Inbound。它对我有用。
保
答案 2 :(得分:0)
我遇到了同样的问题,按照Amazon AWS指南,它适用于我的一台服务器,但是另一台服务器不想挂载EFS卷。分析本地服务器消息日志,我发现即使将关联的安全组设置为允许任何传出流量(在任何端口,任何外部地址等上),传出TCP流量也被阻止。在安全组上设置规则以允许从EC2主机到端口2049上的EFS服务的TCP连接不会产生任何效果,而在本地iptable防火墙上设置特定规则可以解决此问题。我不知道为什么会出现这种差异,但这对我有用。据我所知,不应触摸本地iptables fw,它应该直接从AWS控制台的SG获取规则。
答案 3 :(得分:0)
这里有一个不同的答案,因为我遇到了非常相似的错误,没有一个合适的答案。
我试图像下面那样安装一个NFS(就我而言,EKS代表我这样做,但是我在工作节点中手动测试了相同的命令,结果相同):
[root@host ~]# mount -t nfs fs-abc1234.efs.us-east-1.amazonaws.com:/persistentvolumes /mnt/test
输出为:mount.nfs: Connection timed out
当我只是尝试使用相同的命令,但使用/
作为路径时:
[root@host ~]# mount -t nfs fs-abc1234.efs.us-east-1.amazonaws.com:/ /mnt/test
它就像一种魅力!
我真的不明白可能错误的路径或缺少的路径如何导致time out
类型的错误,但这是唯一可以为我解决问题的方法,所有网络配置均保持不变。
当我使用EKS / Kubernetes时,我决定安装/
,该方法可以正常工作,然后使用subPath来更改容器配置中的卷安装点。
答案 4 :(得分:-1)
EFS上发生ibm-mfp-push
是由于未将安装了端口2049的安全组与EC2实例的安全组一起打开到要装载EFS的EC2实例。添加秒grp将使问题继续下去。
编辑:
除了打开端口2049,您还需要为efs添加VPC的默认安全组以连接到ec2实例。正如教程中所提到的
这可确保实例是Amazon EFS文件系统装入目标将在步骤2:创建Amazon EFS文件系统中授权连接的安全组的成员。
P.S。:我忘了将默认安全组添加到实例,这就是我收到连接超时错误的原因。