2015-07-24 19 views
9

Cassandra'yı çalıştıran bir docker görüntüsünü başlatmaya çalışıyorum. Cassandra ile iletişim kurmak için tasarruf etmem gerekiyor, ancak varsayılan olarak devre dışı bırakılmış gibi görünüyor. cassandra günlükleri gözden geçiriyorum gösterir:Cassandra Docker'da Thrift'i Etkinleştir

INFO 21:10:35 Not starting RPC server as requested. 
    Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it 

Sorum şu: Bu cassandra kabı başlatırken nasıl tutumluluğu etkinleştirebilirsiniz?

Ben boşuna çeşitli ortam değişkenlerini ayarlamak için denedim

:

docker run --name cs1 -d -e "start_rpc=true" cassandra 
docker run --name cs1 -d -e "CASSANDRA_START_RPC=true" cassandra 
docker run --name cs1 -d -e "enablethrift=true" cassandra 
+1

Görünüşe göre, tasarruf RPC sunucusu Cassandra 2.2 beri devre dışı bırakıldı, istemcilerin tutumluluğu kullanabilmesi yeni sürümlerini = true start_rpc, nodetool enablethrift ayarlamanız gerekir. https://issues.apache.org/jira/browse/CASSANDRA-9319 – kisna

cevap

11

Docker Cassandra görüntüsünde de aynı sorunla karşılaşıyorum. Benim docker kabını Github veya varsayılan Cassandra görüntüsü yerine Docker hub'da kullanabilirsiniz.

Sorun, cassandra.yaml dosyasının start_rpc öğesinin false değerine ayarlanmış olmasıdır. Bunu değiştirmemiz gerek. Biz (benim resim yaptığı budur) aşağıdaki Dockerfile kullanabilirsiniz Bunu yapmak için:

FROM cassandra 
RUN sed -i 's/^start_rpc.*$/start_rpc: true/' /etc/cassandra/cassandra.yaml 
+1

TEŞEKKÜRLER! Bende aynı sorun vardı. Ama senin çatalını kullanmak yerine (ki muhtemelen sonunda terkedilir :-(), ben sadece 'docker exec -it cass1 sed -i'/^ start_rpc 'i çalıştırıyorum. * $/Start_rpc: true /'/etc/cassandra/cassandra.yaml 'resmi kapsayıcıyı çalıştırdıktan sonra. Bu çok işe yarıyor! –

+0

@ h3nrik cevap daha doğru – alessiop86

2

dışında gibi gelen kabı erişmek mümkün run komutla tasarruf istemci API portunu maruz unutmayın:

docker run --name cs1 -d .... -p 9160:9160 cassandra 

Ayrıca boğum iletişim için 7000 ve 7001 portu JMX için CQL portu 9042, liman 7199 için olduğu gibi, daha fazla bağlantı noktası göstermek isteyebilir.

19

sed geçici çözüm (ve sadece bu davranışı sağlayan müteakip özel Dockerfiles) artık gerekli değildir.

Daha yeni official Docker containers-e bayrağını kullanarak CASSANDRA_START_RPC ortam değişkenini destekler. Örneğin:

docker run --name cassandra1 -d -e CASSANDRA_START_RPC=true -p 9160:9160 -p 9042:9042 -p 7199:7199 -p 7001:7001 -p 7000:7000 cassandra 
+6

Bu en doğru cevap – alessiop86