我有一堆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
字符串,其中包含有关要执行的任务的信息。但在服务器端,我没有收到任何请求。
我不是一个网络专家,所以我可能会丢失一些小事...(顺便说一句,我第一次尝试做相同的,但有在同一主机上运行的服务器,但没有成功。)
你知道这个设置是否可行吗?我将非常感谢任何暗示使这项工作...
在此先感谢!
但是,swarm创建命令是否允许'--add-host'选项?我认为它只适用于_traditional_容器。至少它不起作用在我的系统中...... – aardalath
当然,它确实有效!我的意思是,如果我修改了映像以使'/ etc/hosts'文件包含服务器的IP,通信就建立了!现在,我想达到同样的效果,但不必调整容器的图像... – aardalath