2017-10-02 3 views
0

나는 docker에 익숙하지 않으며 docker swarm보다 분산 된 Java 응용 프로그램을 실행하려고합니다. docker-compose up 명령을 사용하여 한 노드에서 테스트 했으므로 제대로 작동합니다. 내가Docker swarm에 분산 된 Java App

docker stack deploy --compose-file myfile.yml myapp 

구성 요소 "메신저"구성 요소 "지휘자"

내가 레이블 "지휘자"를 사용하여 연결할 수없는 명령과 서비스로 배포하려고

구성 요소의 IP 주소로 사용 (간단한 구성으로 작동)

어떤 도움이 필요합니까? 내 작성 파일

아래 내가 작성 파일을 만든 :

version: "3" 
services: 
    zk: 
     image: xxx/cep 
     deploy: 
     mode: replicated 
     replicas: 1 
     entrypoint: /ext-sw/zookeeper-3.4.5/bin/zkServer.sh 
     command: start-foreground 
     ports: 
     - 2181:2181 
     networks: 
     - cepnet 
    orchestrator: 
     image: xxx/cep 
     deploy: 
     mode: replicated 
     replicas: 1 
     entrypoint: /bin/runOrchestrator 
     ports: 
     - 9000:9000 
     depends_on: 
     - zk 
     networks: 
     - cepnet 
    im: 
     image: xxx/cep 
     deploy: 
     mode: replicated 
     replicas: 1 
     entrypoint: /bin/runIM -IP im -PORT 9901 -ID im1 -LOGID im1 
     ports: 
     - 9901:9901 
     depends_on: 
     - orchestrator 
     networks: 
     - cepnet 
networks: 
    cepnet: 
enter code here 

편집 : 바와 같이 컨테이너에 고정 표시기에 의해 할당으로 인해 IP에 내 원래의 문제는 댓글 말했다. documentationdepends_on에 명시된 바와 같이 서비스 이름 및 호스트 이름

[email protected]:~# ping orchestrator 
PING orchestrator (10.0.0.9) 56(84) bytes of data. 
64 bytes from 10.0.0.9: icmp_seq=1 ttl=64 time=0.032 ms 
64 bytes from 10.0.0.9: icmp_seq=2 ttl=64 time=0.034 ms 
64 bytes from 10.0.0.9: icmp_seq=3 ttl=64 time=0.033 ms 
^C 
--- orchestrator ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2010ms 
rtt min/avg/max/mdev = 0.032/0.033/0.034/0.000 ms 
[email protected]:~# ping $(hostname) 
PING 90cfe6fc88ed (10.0.0.10) 56(84) bytes of data. 
64 bytes from 90cfe6fc88ed (10.0.0.10): icmp_seq=1 ttl=64 time=0.055 ms 
64 bytes from 90cfe6fc88ed (10.0.0.10): icmp_seq=2 ttl=64 time=0.018 ms 
64 bytes from 90cfe6fc88ed (10.0.0.10): icmp_seq=3 ttl=64 time=0.014 ms 
^C 
--- 90cfe6fc88ed ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2033ms 
rtt min/avg/max/mdev = 0.014/0.029/0.055/0.018 ms 

답변

0

와 ping 명령 실행의 출력 아래

는 무리에서 지원되지 않습니다. 응용 프로그램이 의존하는 서비스가 실행되지 않는 상황을 처리 할 수 ​​있어야합니다 (예 : 사용 가능할 때까지 다시 연결 시도)

실제로 이것이 모든 서비스가 실행될 때까지 대기하는지 테스트하려는 경우 그런 다음 문제를 연결하는 서비스를 종료합니다. 그런 다음 다른 서비스가 이미 실행될 것으로 예상되는 문제를 명확히 실행하면 분명합니다.

+0

"swarm cluster"가 실행 중입니다. 처음에는 3 개의 노드로 구성되어 이제는 단일 노드에서 테스트하기 위해 두 개의 노드를 제거했습니다. – Valerio

+0

업데이트 전에 죄송합니다. 오케 스트레이터는 서비스가 아닙니다. 제 편집 된 답변을 확인하십시오 – herm

+0

답변 해 주셔서 감사합니다. 문제는 항구 인 것 같습니다. 구성을 사용하여 응용 프로그램을 시작하면 im 컴퓨터에서 "telnet im 9000"명령을 실행할 수 있습니다. 스택을 배포 할 때 텔넷으로 연결할 수 없습니다. – Valerio