例如: Service1:运行任务定义以运行nginx和phpfpm Service2:运行任务定义以运行redis
现在,我需要让service1容器与service2容器通信。 根据文档和互联网上找到的资源,这就是我所做的事情,但无法实现需求。
我们需要打开服务发现(完成), 设置适当的服务名称和命名空间作为服务发现端点(完成), 创建任务定义并使用上述属性创建服务(完成), 现在AWS将在Route53上生成SRV记录(OK)。
现在,当使用服务发现端点时,通常格式为“service_discovery_service_name.service_discovery_namespace”。 错误日志显示它无法解析名称。
Type A
记录,而不是SRV
记录,以为每个服务任务分配IP地址。只有当你的通信支持SRV记录查找时,才需要使用SRV
记录,即客户端需要知道它需要执行SRV查找,然后获取IP地址。 - Imranawspvc
,那么它只会创建SRV
类型,然后指向A
类型。当你执行nslookup myapp.local
时,你将什么也得不到,因为它是SRV
类型而不是A
类型。当你尝试nslookup -type=srv myapp.local
时,你将得到SRV列表,然后你可以尝试nslookup {taskid}.myapp.local
来获取容器的IP地址。除非你的客户端支持执行SRV查找和IP查找,否则最好只创建A
记录。如果你需要示例,请让我知道,我会发布它作为答案。 - ImranSRV
查找,然后使用SRV结果(端口和主机名)进行通信。例如- 如果您的Service1是nginx,则[premium](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#service)版本的nginx [支持](https://stackoverflow.com/a/42115019/5030709)此功能。如果您的Service1是`phpfpm`,我不确定它是否支持SRV查找通信。首先[了解](https://anders.com/cms/263/Tutorial/SIP/DNS/SRV/djbdns)“SRV”记录如何不同于“A”类型。 - Imran