2017-10-20 131 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