2017-02-20 1 views
1

나는 Docker로 놀아보기에 상당히 새로운 것이므로 잘하면이게 내 잘못이다.하지만 Docker Compose를 사용하여 다중 호스트 Apache Cassandra 링 설치를 시도하고있다.다중 호스트 cassandra Docker 파일 작성 문제

내가 가지고있는 고정 표시기-compose.yml 다음 파일을

version: '2' 

services: 

    cassandra-1: 
     hostname: cassandra-1 
     image: cassandra:latest 
     command: /bin/bash -c "sleep 1 && echo ' -- Pausing to let system catch up ... -->' && /docker-entrypoint.sh cassandra -f" 
     expose: 
     - 7000 
     - 7001 
     - 7199 
     - 9042 
     - 9160 
     # volumes: # uncomment if you desire mounts, also uncomment cluster.sh 
     # - ./data/cassandra-1:/var/lib/cassandra:rw 

    cassandra-2: 
     hostname: cassandra-2 
     image: cassandra:latest 
     command: /bin/bash -c "sleep 20 && echo ' -- Pausing to let system catch up ... -->' && /docker-entrypoint.sh cassandra -f" 
     environment: 
     - CASSANDRA_SEEDS=cassandra-1 
     links: 
     - cassandra-1:cassandra-1 
     expose: 
     - 7000 
     - 7001 
     - 7199 
     - 9042 
     - 9160 
     # volumes: # uncomment if you desire mounts, also uncomment cluster.sh 
     # - ./data/cassandra-2:/var/lib/cassandra:rw 
이 예는 다른 용기에 다음 1 카산드라 노드 (카산드라-1)과 제 2 노드 (카산드라-2)를 시작하려고

그것은 그러나

을 "CASSANDRA_SEEDS"이 프로그램을 실행할 때, 나는 예외의 종류를 얻을 표준 카산드라 환경 변수의 씨앗 노드로 1 노드를 사용할 수 있어야

cassandra-2_1 | WARN 07:00:35 Seed provider couldn't lookup host cassandra-1 
cassandra-2_1 | Exception (org.apache.cassandra.exceptions.ConfigurationException) encountered during startup: The 
provider lists no seeds. 
cassandra-2_1 | The seed provider lists no seeds. 
cassandra-2_1 | ERROR 07:00:35 Exception encountered during startup: The seed provider lists no seeds. 
cass2_cassandra-2_1 exited with code 3 
카산드라 노드 (카산드라-2)를 시작하려는 시도는 항상 실패하고 내가 2 개 부분으로 고정 표시기-compose.yaml 파일을 분할하는 경우 1

cass1_cassandra-1_1 exited with code 137 

에 죽이고도 ​​끝

여기서 첫 번째 cassandra 노드의 시작은 하나의 파일에 있습니다. 을 사용하여 해당 노드를 시작하면 도커가 작성됩니다.

하시기 바랍니다 또한 참고로 나는 "카산드라-1"에 대한 2 개의 별도 고정 표시기-compose.yml 파일 경로, 일을하고, '카산드라-2 "에 대한 또 다른 내가 오전는 2 파일이 있는지 확인 할 때 "링크"대신 "external_links"를 사용합니다. 하지만 그 결과는 같습니다

좀 더 멍청한 경험을 가진 사람이라면 어디서 잘못 될지 알 수 있습니까?

나는 다른 예제를 위해 웹을 샅샅이 뒤졌으며 모두가 내가하는 것처럼 똑같이하고있는 것처럼 보인다. 하지만 제 방식으로는 작동하지 않습니다.

아주 두 번째 노드가 클러스터에 가입을 시도하기 전에,

답변

1

이 문제는 Docker for Windows에서만 발생하는 것으로 보입니다. Mac에서 원본 파일을 시험해 보았는데 정상적으로 작동했습니다.

1

당신이 첫 번째 노드 완료 시작해야합니다나요 도와주세요 손실을 느낌?

내 경험으로는 첫 번째 노드가 시작을 완료하는 데 20 초가 충분하지 않습니다. 두 번째 노드를 클러스터에 가입하기 전에 60 초 동안 대기 상태로 만듭니다.

command: /bin/bash -c "echo ' -- Pausing to let system catch up ...' && sleep 60 && /docker-entrypoint.sh cassandra -f" 

또한 위의 명령에 나는 echo하고주의 깊게 터미널 출력을보고로서 더 의미 sleep 교환. cassandra-1

로그 터미널에서이 명령을 실행하여

INFO 21:21:06 Node /172.18.0.2 state jump to NORMAL 
INFO 21:23:04 Handshaking version with /172.18.0.4 
INFO 21:23:07 Node /172.18.0.4 is now part of the cluster 
INFO 21:23:07 InetAddress /172.18.0.4 is now UP 

매우 컨테이너 로그 같은 것을 표시해야합니다 :

docker logs [OPTIONS] CONTAINER_ID 

docker ps을 실행하여 컨테이너 ID를 찾을 수 있습니다.

여전히 문제가 해결되지 않으면 두 가지 Cassandra 컨테이너 정의에 mem_limit: 1024m을 추가하십시오.아마도 제한된 메모리 리소스로 인해 시작이 실패 할 수 있습니다.

+0

슬프게도 별 차이가 없었습니다. 같은 오류. Windows에서 Docker를 실행하고 있는데이 파일을 docker의 Linux 사용자에게주었습니다. GRRRR – sacha

관련 문제