通过服务发现在 aws ecs fargate 上重新启动后,nginx 服务未找到应用服务

时间:2021-02-12 13:33:02

标签: nginx amazon-ecs service-discovery

我的集群上有两个服务:myapp-service 和一个 nginx-service。我正在使用服务发现来连接两者,一切正常。

问题发生在我部署新版本的 myapp-service 并且它带有新的私有(和公共)IP 地址时。部署后,我看到 Route 53 上的 ip 已正确更新,但是当我尝试通过 nginx 访问 my-app 时,它返回一个错误的网关。当我查看 Cloudwatch 上的 nginx 日志时,我可以看到 nginx 正在尝试连接到 myapp-service 的旧私有 IP 地址。

  • 目前我没有使用任何负载平衡或自动缩放配置。
  • 任务定义中对我的容器进行了任何运行状况检查。
  • “启用 ECS 任务运行状况传播”已开启。

这是我的 nginx 配置(default.conf),而 market-service.local 是我在 Route 53 上的注册表。

upstream channels-backend {
    server marketplace-service.local:8000;
}

server {
    listen 80;

    location / {
        proxy_pass http://channels-backend;
    }

}

有人能帮我发现我在这里遗漏了什么吗??

谢谢

1 个答案:

答案 0 :(得分:0)

我不知道 upstream 部分。

upstream channels-backend {
    server marketplace-service.local:8000;
}

但我确定 server 部分。对于 Fargate,使用 localhost,因此添加 server_name localhost;。然后将下面显示的 4 行代码添加到 location 块。

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://channels-backend;
    }

}