【问题标题】:Running Redis on ECS using Fargate使用 Fargate 在 ECS 上运行 Redis
【发布时间】:2024-01-22 12:10:01
【问题描述】:

在我的应用程序中,我使用了 ruby​​ 和 rails 应用程序。该应用程序在 ngix+passanger 上运行。我也使用过 Redis 和 sidekiq。我想在 ECS Fargate 上运行我的应用程序。

我已经实施了以下步骤:

  1. 使用 docker 文件创建 Docker 映像
  • 网络
  • 网络服务器
  • Redis
  • Sidekiq
  1. 将 docker 镜像推送到 ECR 中
  2. 使用 Fargate 创建任务
  3. 使用 Fargate 在 ECS 上运行任务

我的 docker-compose 文件如下:

version: '3.7' 

services:
  web:
    build: 
        context: .
        dockerfile: ./Dockerfile
    ports : 
      -  3000:3000 
    env_file:
      - .env

  webserver:
    build : 
      context: .      
      dockerfile: ./nginx/Dockerfile 
    links: 
      - 'web'
    ports : 
      -  80:80 
    env_file:
      - .env

  redis:
    build : 
      context: .
      dockerfile: ./redis/Dockerfile 
    volumes:
      - ../../tmp/db:/var/lib/redis/data
    ports:
      - '6379:6379'

  sidekiq:
    build: .
    command: 'bundle exec sidekiq'    

当我运行任务时,出现如下错误:

错误

【问题讨论】:

    标签: docker redis docker-compose amazon-ecs aws-fargate


    【解决方案1】:

    在您的 Fargate 任务中,确保安全组允许端口 6379。在我看来,他的端口上的流量没有通过,导致运行状况检查失败并且使任务不正常并被调度程序删除。

    【讨论】:

    • 我已经在ECS任务中打开了6379端口。您可以检查一个错误日志文件,说明 Redis 已准备好接受连接,但一段时间后它会收到 SIGTERM 并关闭。
    • 你有没有想过如何解决这个@shariqmaws?有同样的问题。
    • 同时检查连接容器的出站访问
    最近更新 更多