首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使我的应用程序在EC2访问红宝石上的?

如何使我的应用程序在EC2访问红宝石上的?
EN

Stack Overflow用户
提问于 2022-03-21 13:45:48
回答 1查看 594关注 0票数 0

我在AWS上有一个下面的软件,其中部分应用程序运行在EC2实例上,另一部分运行在ECS集群上。

我很难让运行在EC2实例上的应用程序访问运行在ECS上的特定容器。更清楚的是,我需要在ECS上的EC2 access Redis上使用我的应用程序。做这种整合是可能的吗?

应用程序的两个部分都位于同一个VPC中,并且拥有授权彼此访问的安全组。

更多上下文:

每次在ECS Fargate中提供任务定义时,集群服务上的公共/私有网络IP都会发生变化。为了能够访问这些服务,Amazon提供了服务发现配置,每当ECS网络发生更改时,该配置将更新DNS托管区域。

我的问题是在我的EC2实例中使用这个托管区域。我可以通过IP直接访问ECS容器,但这不是理想的方案。每当提供服务时,IP地址就会不断变化。另一方面,在我的EC2实例中,路由53名称服务器总是显示为未知。

我的云配置如下:

任务定义

代码语言:javascript
复制
{
  "family": "******",
  "requiresCompatibilities": ["FARGATE"],
  "executionRoleArn": "arn:aws:iam::******",
  "networkMode": "awsvpc",
  "runtimePlatform": {
    "operatingSystemFamily": "LINUX"
  },
  "cpu": "2048",
  "memory": "4096",
  "containerDefinitions": [
    {
      "name": "redis",
      "image": "redis:alpine",
      "portMappings": [
        {
          "containerPort": 6379,
          "hostPort": 6379
        }
      ]
    }
  ]
}

ECS服务配置

ECS服务网络设置:

53号公路

为ECS中的服务启用了容器自动发现:

无论何时提供ECS服务,都会更新A记录IP。

EC2实例的ECS安全组入站规则:

对于来自EC2实例的连接,我的ECS容器是打开的。通过ECS服务IP与Redis的连接是成功的,但是通过生成的名称服务器的连接并不成功。

EN

回答 1

Stack Overflow用户

发布于 2022-03-21 19:55:47

首先,我想知道,为什么要在ECS Fargate中运行redis而不是使用Amazon https://aws.amazon.com/elasticache

但是,如果您真的想这样做,您至少应该有以下配置:

  • 或ALB,指您的服务
  • 目标组指向服务
  • 您的"redis“服务
  • 您的任务定义

f 210

将所有服务都放在同一个安全组中,或者与相应的安全组一起添加入站/出站。不要忘记添加端口6379 fir入站/出站规则。

直接指向容器并不是一个好做法,因为重新启动/缩放容器将改变ip地址。

如果您比较ALB或北草坪会议大楼的成本(这样做,我希望ALB与端口6379端口上的侦听器进行比较)和Fargate的成本,您将能够使用一个中等大小的Elasticache的t3/t4g实例。

我对“自托管”或“托管服务”做了很多比较,如果有来自AWS的替代托管服务,那么您自己运行服务的理由就不多了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71558667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档