我有一堆swarm容器(现在在一个主机中,但可能在多主机系统中,符合多节点群)。该系统由数据服务器和一组自治工作者组成,这些工作人员处理服务器接收的比特并摄取结果。输入数据检索和输出数据摄取是通过HTTP GET / POST完成的。服务器端(数据提供和结果接收)工作,并且当针对在任何主机中运行的工作者进行测试时,没有Docker,它运行没有问题。但我需要将这些工作人员放在Docker群中。
我无法实现的是不同群组工作者和外部服务器之间的通信。我的服务器在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
在这个简单的示例中,我不会将工作人员curl
调用到服务器地址和get_task
节点。它应该返回一个JSON
字符串,其中包含有关要执行的任务的信息。但在服务器端,我没有收到任何请求。
我不是网络专家,所以我可能会遗漏一些微不足道的东西......(顺便说一下,我首先尝试做同样的事情,但让服务器在同一台主机上运行,但没有成功。)
您知道这种设置是否可行?我非常感谢任何暗示让这项工作......
提前致谢!
答案 0 :(得分: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