【问题标题】:How do I Allow Fargate cluster to access external mongodb database instance如何允许 Fargate 集群访问外部 mongodb 数据库实例
【发布时间】:2022-03-25 00:10:44
【问题描述】:

我已经构建了一个运行我的网站的 Fargate 集群。该服务正确启动网站的任务,但在尝试连接到我的数据库实例时停止。

MongoError: failed to connect to server [123.456.789.0:27017] on first connect [MongoError: connection 0 to 123.456.789.0:27017 timed out]

如何将 Fargate 集群添加到我的数据库实例上的安全组。我没有可以找到的 Fargate 集群的公共 IP 地址或范围。我在 aws 文档中找不到任何合适的指南。

【问题讨论】:

  • 这是一个很好的问题,因为... Fargate 的 IP 到底是什么?
  • 迟到了(2022 年),但实现这一点的方法不是使用 IP 地址,而是通过将 ECS 安全组添加到我们尝试访问的任何入站规则中(例如: RDS)。入站到 ECS 也是如此:我们需要将 ECS 安全组添加到 LoadBalancer 安全组(如果我们的流量是从 ALB 入站的),因此,在 SG 规则中,不是使用 IP 地址,而是在入站中输入另一个安全组规则。

标签: amazon-ecs aws-security-group network-security-groups aws-fargate


【解决方案1】:

如果 mongo 在你的 vpc 之外运行

  1. 如果您在 VPC 的私有子网内运行 Fargate。 ip 地址将是此处找到的 NAT ip 地址NAT GATEWAY
  2. 如果它在公共子网中运行。您可以使用网络接口为您的 Fargate 任务分配公共 IP 地址。

【讨论】:

  • 我的应用程序的更多背景信息。需要连接到我的数据库的任务在我的 ecs fargate 集群中。运行该任务的服务允许 vpc 和允许的子网与我的数据库实例运行的位置相同。它还有一个允许所有出站流量的安全组。我能够连接到在 mlab 的沙箱中运行的 mongo 实例,因此与外部服务器通信似乎不是问题。我很困惑为什么它似乎是我的数据库实例,特别是它无法连接到。
  • 我还打开了我的任务尝试连接的端口 27017,在我的 mongo 实例上向世界开放,但仍然无法与我的任务建立连接。
  • 我们在 Fargate 上运行了一些服务,这些服务同时连接到 EC2 中的 mongo 设置和 RDS。尝试允许 fargate 和 mongo 的所有入站和出站并试一试。
【解决方案2】:

迟到了(2022 年),但实现这一目标的方法不是使用 IP 地址,而是通过将 ECS 安全组添加到我们尝试访问的任何内容(例如:RDS)的入站规则中。因此,在 RDS 入站安全组规则中,您应输入识别的 ECS 安全组(例如:sg-asdkmh778e7tugfkjhb),而不是使用 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多