Docker 控制器/工作器集群架构和交叉通信

Docker 控制器/工作器集群架构和交叉通信

我正在尝试使用 Docker 构建一个简单的集群,最终将其部署到 AWS EC2 容器服务。

我的任务是获取 SQS 队列中不同类型的作业,并根据一些 JSON 对其进行处理{ type = "<TYPE_NAME>"}

我对此的初步想法如下:

每种类型的工作都有自己的容器

这很有用,因为我的一些工作是 Python 脚本,其他工作需要C++编译程序,还有一些需要专门的环境。其余的只是文件操作。

一个容器统治一切

一个容器将控制其余部分,从 SQS 队列读取,确定它是什么类型的作业,并

提问时间

我已经成功完成了所有这些独立容器的基本构建。现在,我正在尝试弄清楚如何让它们相互通信。

我应该如何考虑将工作从主容器传递给子容器?应该通过 API 调用吗?我是否需要在每个连接到端口的容器上设置一个监听器服务来等待信号,或者我是否可以直接从具有共享文件系统的主实例执行代码?

一切都很新颖.....

答案1

我没有足够的声誉来发表评论,因此我将其作为答案发布。

我已经成功完成了所有这些独立容器的基本构建。现在,我正在尝试弄清楚如何让它们相互通信。

您可能已经了解到有一些方法可以做到这一点。

(a)您可以使用 docker-compose,然后使用“链接”,在这种情况下,主机名将可供链接的容器访问

(b)您可以使用docker network create网络并启动同一网络中的所有容器,方法是:--network

可能还有更好的方法,这些方法更简单。

我应该如何考虑将工作从主容器传递给子容器?

我认为选择权在你手中。使用带端口的监听器比安装磁盘更简单,因为后者很难扩展和跟踪。至少可以使用 来查看端口转发docker ps

这个问题的回答范围非常广泛:)

相关内容