我有一堆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