不同vpc子网中的aws ec2实例互相访问

时间:2015-08-31 03:06:34

标签: security amazon-web-services amazon-ec2 subnet amazon-vpc

我有2个AWS EC2实例位于我的vpc的2个不同子网中。

我想允许第一个实例上运行的ruby应用程序(例如 App#1 )调用应用程序的端点(比如 App#2 )在第二个实例。

我还希望我的用户直接从浏览器中调用 App#2 的端点。

这是我尝试过的(大多数都失败了):

  1. [Sucess!]我将用户的已知IP地址添加到 App#2 的负载均衡器安全组的入站规则中,并确认了他们可以从浏览器访问 App#2 端点。

  2. [失败!]我将应用程序#1 的负载均衡器安全组ID添加到入站规则到的负载均衡器安全组应用程序#2 即可。但是我的日志告诉我 App#1 无法访问 App#2 的端点。

  3. [失败!]我将 App#1 的VPC安全组ID添加到应用的负载均衡器安全组的入站规则中#2 - 不,仍然无法正常工作。 (不知何故,当我为 App#1 启动实例时,aws会自动为此实例创建2个安全组 - 一个用于VPC,另一个用于负载均衡器......我不知道为什么/如何发生这种情况...)

  4. [失败!]我添加了子网 App#1 的CIDR进入的负载均衡器安全组的入站规则应用程序#2 即可。仍然没有快乐。

  5. [成功...排序]我为运行 App#1 的实例分配了一个弹性IP,并将其添加到了入站的负载规则中平衡安全组 App#2 。这有效,但我宁愿不使用这种方法,因为我希望将来弹性扩展我的 App#1 ,我不知道如何在新实例旋转时自动为其分配更多弹性IP向上,将它们添加到入站规则中,然后在关闭时以某种方式删除它们。

  6. 我觉得必须有一个非常干净的解决方案来解决这个问题,我可能会错过一些非常明显的东西。有人可以给我一个提示吗?

    任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

所以 App#2 位于公有子网中, App#1 位于私有子网中。例如,图表将类似于:

互联网=> LB#2 =>应用#2:80(在公共子网中)=> LB#1 =>应用#1:4567(在私有子网中)

  • 让我们在所有实例和负载均衡器中打开所有入站规则,检查您是否可以通过互联网访问它,
  • 然后每次在每个图层上应用安全组,不要同时更改所有图层。

让我知道哪一层有问题。

答案 1 :(得分:0)

听起来您可能正在使用负载均衡器的公共IP地址,因此看起来流量来自外部。如果有私有IP / DNS,请尝试使用私有IP / DNS,或者设置第二个面向内部的负载均衡器。