2017-12-30 35 views
3

Docker에서 Cassandra를 실행 중이고 데이터베이스 준비가 완료되면 CQL 스크립트를 시작하려고합니다.Cassandra가 준비되어 있는지 확인하는 방법

while ! nc -z localhost 7199; do 
    sleep 1 
done 
echo "Cassandra is ready" 
cqlsh -f ./createTables.cql 

을하지만 데이터베이스가 정말 준비되기 전에 포트를 개방하고, cqlsh 따라서 실패 : 나는 준비가되면 감지 포트를 확인했습니다. 카산드라 상태를 제대로 확인하고 스크립트를 시작하는 방법? 미리 감사드립니다.

답변

1

먼저 다른 포트 (9042)를 기다려야합니다. 이것은 CQLSH에서 사용하는 포트입니다.

nc 대신 sqlsh (또는 두 번째 단계는 nc이 실행 속도가 훨씬 빠르기 때문에) 실행을 기다릴 수도 있습니다. 카산드라가 준비 될 때까지

while ! cqlsh -e 'describe cluster' ; do 
    sleep 1 
done 

기다리는 ...이 줄은 /0.0.0.0에 CQL 클라이언트의 카산드라 SYSTEM.LOG`시작 듣기에 나타납니다

+0

: 예를 들어, 명령 같은 것을 사용할 수 있습니다 : 9042 ...'노드가 준비되면. – LHWizard

+1

0.0.0.0에서 수신 대기하지 않는 것이 좋습니다. –