2017-10-20 104 views
0

我有一堆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字符串,其中包含有关要执行的任务的信息。但在服务器端,我没有收到任何请求。

我不是一个网络专家,所以我可能会丢失一些小事...(顺便说一句,我第一次尝试做相同的,但有在同一主机上运行的服务器,但没有成功。)

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

在此先感谢!

回答

1

我将创建码头工人的默认IP范围内的覆盖网络

泊坞窗网创建--driver覆盖我的网

在这之后外部主机添加到该服务。

docker service create 
     --add-host external:10.69.180.30 \ 
     --network mynet --name mysrv --replicas 4 \ 
     centos curl http://external:8080/get_task 
+0

但是,swarm创建命令是否允许'--add-host'选项?我认为它只适用于_traditional_容器。至少它不起作用在我的系统中...... – aardalath

+0

当然,它确实有效!我的意思是,如果我修改了映像以使'/ etc/hosts'文件包含服务器的IP,通信就建立了!现在,我想达到同样的效果,但不必调整容器的图像... – aardalath