AWS ECS:如何在不使用 ALB 的情况下在 ECS 集群内的服务之间进行通信?有办法吗?

Him*_*ngh 0 containers amazon-web-services amazon-ecs docker

假设我有一个服务说auth(端口:8080),它有 3 个任务正在运行,假设我有另一个服务说config-server(端口:8888),正在运行 2 个任务,其中auth将从中加载配置属性,类似于 spring云配置服务器。

启动类型:EC2

在 8080 上运行的身份验证服务 | 在 8888 上运行的配置服务器服务

现在,为了从auth访问config-server,我是否必须使用 ALB 来调用config-server或者我可以使用服务名称进行调用,例如http://config-server:8888

我试过了,但它不起作用。我在这里误解了任何概念吗?

我想对此有所了解。这就是我的服务发现配置的样子。

编辑:

我创建了一个私有命名空间 test.lo,但仍然无法正常工作..

curl http://config-server.test.lo curl: (6) 无法解析主机:config-server.test.lo

Mar*_*cin 5

这些是要检查的一般事项。

  1. 确保VPC 的enableDnsHostnamesenableDnsSupport选项已启用。

  2. 不要local用作私有命名空间。这是一个保留名称。

  3. 检查在 Route 53 中创建的私有托管区域,并验证它是否已将所有 A(和 SRV,如果使用)正确设置为服务任务的私有 IP 地址。

  4. 私有托管区域只能从与 ECS 服务相同的 VPC 内部解析。因此,要检查它们是否有效,可以在 VPC 中创建一个实例并从那里进行检查。

  5. 使用dig工具检查 DNS 是否真的将私有 dns 名称解析为私有 IP 地址。它应该返回多个地址,一个用于服务中的每个任务。

  6. 如果使用awsvpc网络模式可以使用 A 或 SRV 记录类型。因此,如果 SRV 不起作用,则值得检查 A 记录。