0

我有一堆集群容器(现在在一个主机中,但可能在多主机系统中,符合多节点集群)。该系统由一个数据服务器和一组自主工作人员组成,这些工作人员处理服务器接收到的位并提取结果。输入数据检索和输出数据摄取是通过 HTTP GET/POST 完成的。服务器端(数据提供和结果接收)工作,当针对在任何主机上运行的工作人员进行测试时,没有 Docker,它运行没有问题。但我需要将这些工人放在一个 Docker 群中。

我无法实现的是不同 swarm worker 和外部服务器之间的通信。我的服务器在 IP 为 10.69.180.30 的主机上运行,​​端口为 8080。

python test-dataserver.py -H 10.69.180.30 -p 8080

在几个论坛中挖掘之后,我尝试使用--subnet 10.69.180.0/24 创建一个覆盖网络,然后在另一台主机上启动连接到该网络的工作人员服务。但没办法。

docker network create --driver overlay --subnet 10.69.180.0/24 mynet
docker service create --network mynet --name mysrv --replicas 4 \
                 centos curl http://10.69.180.30:8080/get_task

在这个简单的例子中,我不调用worker,而只是调用curl服务器和get_task节点的地址。它应该返回一个JSON字符串,其中包含有关要执行的任务的信息。但是在服务器端我没有收到任何请求。

我不是网络专家,所以我可能会遗漏一些琐碎的事情......(顺便说一句,我首先尝试做同样的事情,但是让服务器在同一主机上运行,​​但没有成功。)

你知道这种设置是否可行吗?我将非常感谢任何提示使这项工作...

提前致谢!

4

1 回答 1

1

我将使用 Dockers 默认 IP 范围创建一个覆盖网络

docker network create --driver overlay mynet

在此之后将外部主机添加到服务中。

docker service create 
       --add-host external:10.69.180.30 \
       --network mynet --name mysrv --replicas 4 \
       centos curl http://external:8080/get_task
于 2017-10-20T09:27:28.053 回答