问题描述
我有2个以EC2启动类型和网桥联网模式运行的ECS服务。每个服务有一个任务,两个任务都在同一EC2容器主机上运行。
在同一ECS主机上,第一个任务中的API容器试图通过主机名和端口号(例如:http:// abc-def:5000)来通信第二个任务中的DB容器。有什么方法可以做到这一点?
解决方法
您的选择是:
-
将所有内容放入单个任务定义中。然后,您可以使用
User
属性来使容器A与容器public interface IUserService { bool IsAdmin<T>(T userId) where T : typeof(User.String) }
进行通信。请注意,link
不支持循环关系,这意味着如果A可以与B对话,那么B也将无法做到这一点。 -
切换到网络模式
B:port
。这样您就可以与link
进行交流。 -
使用Consul或AWS ECS Service Discovery之类的工具进行正确的服务发现。我没有后者的经验。参见here。
-
将您的任务放在ALB后面,并使用此负载平衡器在任务之间进行通信。