【问题标题】:Redis not found using Copilot and Service Discovery使用 Copilot 和服务发现未找到 Redis
【发布时间】:2022-01-20 13:47:56
【问题描述】:

我部署了负载平衡 Web 服务:

About

  Application      my-app
  Name              api
  Type              Load Balanced Web Service

Configurations

  Environment       Tasks               CPU (vCPU)          Memory (MiB)        Port
  -----------       -----               ----------          ------------        ----
  production        1                   0.25                512                 80

Routes

  Environment       URL
  -----------       ---
  production        http://xxxxx.us-east-1.elb.amazonaws.com

Service Discovery

  Environment       Namespace
  -----------       ---------
  production       api.my-app.local:80

Variables

  Name                                Container           Environment         Value
  ----                                ---------           -----------         -----
  COPILOT_APPLICATION_NAME              "                   "                 my-app
  COPILOT_ENVIRONMENT_NAME              "                   "                 production
  COPILOT_LB_DNS                        "                   "                 xxxx.us-east-1.elb.amazonaws.com
  COPILOT_SERVICE_DISCOVERY_ENDPOINT    "                   "                 my-app.local
  COPILOT_SERVICE_NAME                  "                   "                api
  REDIS_URL                             "                   "                 redis://redis.my-app.local:6379

和 redis 作为后端服务在同一个 copilot 应用中:

About

  Application       my-app
  Name              redis
  Type              Backend Service

Configurations

  Environment       Tasks               CPU (vCPU)          Memory (MiB)        Port
  -----------       -----               ----------          ------------        ----
  production        1                   0.25                512                 6379

Service Discovery

  Environment       Namespace
  -----------       ---------
  production        redis.my-app.local:6379

Variables

  Name                                Container           Environment         Value
  ----                                ---------           -----------         -----
  COPILOT_APPLICATION_NAME            redis               production          my-app
  COPILOT_ENVIRONMENT_NAME              "                   "                 production
  COPILOT_SERVICE_DISCOVERY_ENDPOINT    "                   "                 my-app.local
  COPILOT_SERVICE_NAME                  "                   "                 redis

当我查看 Route53 上的记录时,redis.my-app.local 存在。但是我的api中的日志总是说:

uncaughtException: Redis connection to redis.my-app.local:6379 failed - getaddrinfo ENOTFOUND redis.my-app.local

然后在某个时候 redis 关闭,因为没有传入连接......这是什么问题?

【问题讨论】:

    标签: redis service-discovery aws-copilot


    【解决方案1】:

    您似乎找到了解决方案:必须启用 DNS 主机名。

    对于可能遇到相同问题的其他人:

    默认情况下,Copilot 会:

    EnableDnsHostnames: true
    EnableDnsSupport: true
    

    我们将为导入的 VPC 添加警告,但与此同时,请确保您已为现有 VPC 启用 DNS 主机名。

    参考:https://github.com/aws/copilot-cli/issues/2211

    【讨论】:

    • 是的,我玩了一点 VPC 属性,终于成功了。感谢您回复我的消息:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2014-11-17
    • 2012-09-28
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多