如何解决如何在fargate中连接两个任务
我在 faragte 中有两个任务来自两个不同的任务定义。现在同一个任务中的容器可以通过localhost相互访问了。
但是,我如何让两个不同任务中的容器相互通信。
我主要是尝试构建一个管道,其中每个任务定义(作为一个任务)一个一个地运行。 一项任务可能依赖另一项。
解决方法
与其使用它们与其他人交流,不如使用可以控制流程的编排层。
Step functions 是为此提供的 AWS 解决方案,它支持 ECS 和 Fargate,因此将在需要时负责启动任务。
而不是任务之间直接通信,每一步都可以provide output,and take in input。
通过使用这种方法,容器彼此隔离,但仍保持按顺序执行的能力。它还将提供对正在发生的事情的可见性,并支持等待、循环和成功/失败案例。
,在 Fargate 中,当多个容器作为单个任务的一部分启动时,它们还可以通过本地环回接口相互通信。 Fargate 使用一种称为 awsvpc 的特殊容器网络模式,它为任务中的所有容器提供了一个共享的弹性网络接口,用于通信。
如果您为任务中的每个容器指定端口映射,则容器可以在该端口上相互通信。例如,以下任务定义可用于部署 Web 层和 API 层:
JSON
"family": "myapp"
"containerDefinitions": [
{
"name": "web","image": "my web image url","portMappings": [
{
"containerPort": 80
}
],"memory": 500,"cpu": 10,"esssential": true
},{
"name": "api","image": "my api image url","portMappings": [
{
"containerPort": 8080
}
],"essential": true
}
]
}
带有 Fargate 的 ECS 能够采用此定义并启动两个容器,每个容器都绑定到弹性网络接口上的特定静态端口以执行任务。
因为每个 Fargate 任务都有自己独立的网络堆栈,所以不需要像其他网络模式那样使用动态端口来避免不同任务之间的端口冲突。静态端口使容器之间可以轻松通信。
例如,Web 容器使用其众所周知的 API 容器向 API 容器发出请求 静态端口:
curl 127.0.0.1:8080/my-endpoint
Bash
这会发送一个本地网络请求,该请求通过本地环回接口直接从一个容器发送到另一个容器,而无需遍历网络。这种部署策略允许在两个紧密耦合的容器之间进行快速有效的通信。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。