2017-10-20 20 views
0

나는 하나의 단일 호스트에 있지만 다중 호스트 시스템에 잠재적으로 다중 노드 군대를 준수하는 무리 컨테이너가 있습니다. 이 시스템은 데이터 서버와 서버가 수신 한 비트를 처리하고 결과를 다시 수집하는 일련의 자율적 인 작업자로 구성됩니다. 입력 데이터 검색 및 출력 데이터 처리는 HTTP GET/POST를 통해 수행됩니다. 서버 측 (데이터 제공 및 결과 수신)은 작동하며 Docker없이 모든 호스트에서 실행중인 작업자에 대해 테스트 한 경우 문제없이 실행됩니다. 하지만이 노동자들을 도커 떼에 배치해야합니다.Docker : 서버에 연결하는 직원을 모으십시오.

나는 달성 할 수없는 무엇이 다른 무리 노동자와 외부 서버 사이 커뮤니케이션이다. 내 서버가 여러 포럼에 파고 후 포트 8080

python test-dataserver.py -H 10.69.180.30 -p 8080 

에서, IP 10.69.180.30와 호스트에서 실행되고, 나는 --subnet 10.69.180.0/24로 오버레이 네트워크를 만들려고하고 다른 호스트에서이 네트워크에 연결된 작업자의 서비스를 시작하십시오. 하지만 절대. 나는 노동자를 호출하지만, 단지 curl 서버의 주소와 get_task 노드로하지 않는 간단한 예에서

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 

. 실행될 작업에 대한 정보가 포함 된 JSON 문자열을 반환해야합니다. 하지만 서버 측에서는 어떤 요청도받지 못합니다.

내가 네트워크 전문가가 아니에요, 그래서 사소한 뭔가 ... 누락 될 수 있습니다 (BTW, 내가 먼저 성공하지 않고, 동일한 작업을 수행하려고했으나 동일한 호스트에서 실행하는 서버를 가지고.)

이 설정이 가능한지 아십니까? 나는이 작품을 만들기 위해 어떤 힌트를 주셔서 대단히 감사하겠습니다 ...

미리 감사드립니다! 이 서비스에 대한 외부 호스트를 추가 한 후

답변

1

은 내가

고정 표시기 네트워크 --driver 오버레이 mynet에게

을 만들 부두 노동자의 기본 IP 범위와 오버레이 네트워크를 만들 것입니다.

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 create 명령은'--add-host' 옵션을 허용합니까? 나는 그것이 _traditional_ 컨테이너에서만 사용 가능하다고 생각했다. 적어도 내 시스템에서는 작동하지 않습니다 ... – aardalath

+0

확실히 작동합니다! 나는'/ etc/hosts' 파일에 서버의 IP가 포함되도록 이미지를 수정하면 통신이 설정된다는 것을 의미합니다! 이제는 컨테이너의 이미지를 조정하지 않고도 같은 결과를 얻으려고합니다. – aardalath