我们有一个自动扩展组,可以根据需要启动多个实例。自动扩展组中的所有实例都从单独的 EC2 实例(运行 NFS)获取数据,因此它们都可以共享相同的数据。
以下是 NFS 服务器的设置,允许所有人通过通配符访问它
/var/nfs *(rw,同步,no_root_squash,no_subtree_check)
现在,当服务器自动扩展时,它会将其自己的私有/公共 IP 地址随机分配给在自动扩展组下运行的 EC2 实例,现在我必须将这些私有/公共 IP 地址分配给 NFS 实例安全组,如下所示
否则,我有一个安全性较弱的选项,允许来自任何来源的所有端口上的所有流量,即:安全组可以访问来自所有来源的所有端口,这将是一场灾难。
如果没有这两个选项,在自动扩展组下运行的我的 EC2 实例就无法连接到 NFS 实例。
我尝试了很多选项,比如允许所有端口的所有流量到自动扩展安全组“组 ID”,或者允许所有端口的所有流量到默认安全组“组 ID”,就像这样
但这些都不起作用,我陷入了奇怪的境地!
附言:由于我已经尝试了所有流量,因此没有端口问题。
答案1
您不应该使用弹性 IP,它是公共的,您将需要支付互联网流量费,而内部流量是免费的。
实例在重新启动时会保留其 IP,但在停止/启动时可能会更改。但是,我在子网上有一个实例,它已多次停止和启动,并保留了相同的私有 IP。
我认为最好的解决方案是使用 ENI(弹性网络接口)。您可以创建一个 ENI 并指定一个私有固定 IP 地址,这可以通过 API 或控制台完成。然后,您将 ENI 附加到您的 EC2 实例,可能需要进行一些调整才能让操作系统/软件识别它,但我想您可以搜索一下。
您可以将 NFS 实例放在与 EC2 实例相同的子网中,但如果 EC2 实例是公共 Web 服务器,则其安全性不如使用 DMZ。