gpt4 book ai didi

amazon-web-services - 无法让 AWS ECS 服务通过服务发现进行通信

转载 作者:行者123 更新时间:2023-12-04 15:17:17 37 4
gpt4 key购买 nike

我试图让 2 个服务通过 AWS ECS 服务中的服务发现端点进行通信。

示例:

服务 1:运行任务定义来运行 nginx 和 phpfpm

服务 2:运行任务定义来运行redis

Now, I need to make service1 container communicate to service2 container



根据互联网上找到的文档和资源。这是我所做的,无法实现需要。
  • 我们需要开启服务发现( Done )
  • 设置适当的服务名称和命名空间,它们将用作服务发现端点 ( 完成 )
  • 创建任务定义并创建具有上述属性集的服务 ( 完成 )
  • 现在 AWS 将在 Route53 ( OK )
  • 上生成 SRV 记录

    现在,当使用通常采用格式的服务发现端点时 service_discovery_service_name.service_discovery_namespace.
    错误日志显示,无法解析名称。

    enter image description here

    最佳答案

    根据我们的谈话,这里是正在发生的事情的一些摘要。

  • 服务1 ( nginx 在你的情况下)需要与 互动服务2 ( redis ) 与 AWS ServiceDiscovery 选项和使用 SRV然后记录 服务1 需要注意的是需要执行DNS SRV查找而不是 DNS A (地址)查找。
  • 您在这里有多种选择。一、如果要继续使用SRV记录使用然后您的客户 nginx需要使用 service 选项代理 redis 上游服务器和 resolve分别是 available仅在 premium nginx版本。检查我在有效答案底部测试过的示例 nginx 配置。
  • 还要确保您创建的 AWS 服务发现名称带有前缀 _http._tcp否则,我在配置 SRV 时遇到问题 resolve/service nginx 配置中没有前缀的选项。

  • aws ecs service
  • 其他选项,如果您不想依赖 SRV记录但转到标准 A记录查找然后你将不得不使用 awsvpc容器模式并选择 A选项。

  • enter image description here
  • 使用 DNS A 选项,然后您的查询 service_discovery_service_name.service_discovery_namespace会正常工作。
  • 对于 DNS A 选项,有一些限制。由于 ENI 数量限制取决于 EC2 实例系列,因此您无法为同一 EC2 实例上的给定服务创建多个任务,因此我更喜欢仅 SRV 记录。

  • 示例 nginx DNS SRV 选项配置:
    stream {
    resolver 172.31.0.2;
    upstream redis {
    zone tcp_servers 64k;
    server redisservice.local service=_http._tcp resolve;
    }
    server {
    listen 12345;
    status_zone tcp_server;
    proxy_pass redis;
    }
    }

    一些引用——

    https://aws.amazon.com/blogs/aws/amazon-ecs-service-discovery/
    https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html

    关于amazon-web-services - 无法让 AWS ECS 服务通过服务发现进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56897754/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com