我有一堆集群容器(现在在一个主机中,但可能在多主机系统中,符合多节点集群)。该系统由一个数据服务器和一组自主工作人员组成,这些工作人员处理服务器接收到的位并提取结果。输入数据检索和输出数据摄取是通过 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
字符串,其中包含有关要执行的任务的信息。但是在服务器端我没有收到任何请求。
我不是网络专家,所以我可能会遗漏一些琐碎的事情......(顺便说一句,我首先尝试做同样的事情,但是让服务器在同一主机上运行,但没有成功。)
你知道这种设置是否可行吗?我将非常感谢任何提示使这项工作...
提前致谢!