我有三个具有弹性IP的EC2实例。
每个包含一个服务器。
每台服务器都需要在每台机器上打开TCP端口8181,2188,2888和3888。
每个服务器应该有可能通过这些端口与其他服务器交谈。
我创build了一个安全组(例如,命名为: sg-4d775c42 ),我在这里放置了以下规则:
自定义TCP规则| TCP | 8181 | SG-4d775c42
自定义TCP规则| TCP | 2181 | SG-4d775c42
自定义TCP规则| TCP | 2888 | SG-4d775c42
自定义TCP规则| TCP | 3888 | SG-4d775c42
我认为这些规则意味着安全组sg-4d775c42中的每台机器可以调用同一组中其他机器的端口sg-4d775c42和3888。
但似乎并非如此!
如果我打开这个世界的港口,即下列规则:
自定义TCP规则| TCP | 8181 | 0.0.0.0/0
自定义TCP规则| TCP | 2181 | 0.0.0.0/0
自定义TCP规则| TCP | 2888 | 0.0.0.0/0
自定义TCP规则| TCP | 3888 | 0.0.0.0/0
当然,我的服务器可以一起谈话。
而且,这三台服务器之间的私密通信是第一步。 第二步将连接到另一个私人networking这3个服务器集成到另一个实例。
所以我的问题是以下一个:
如何创build(或模拟)在我的EC2实例之间打开端口的专用networking?
我认为这些规则意味着安全组sg-4d775c42中的每台机器可以调用同一组中其他机器的端口8181,2181,2888和3888。
它确实如此,但前提是您使用AWS内部IP。 您可以使用每个实例获取的ec2-xxx-xxx-xxx-xxx.us-region-1.compute.amazonaws.com地址(这将在AWSnetworking内返回一个内部IP)或直接通过实例的私有IP 。
如果您通过使用实例的弹性IP访问公共Internet,则AWS会丢失它所在的安全组的任何信息,因此只有基于IP的规则才能起作用。