2015-07-24 10 views
9

में थ्रिफ्ट सक्षम करें मैं एक डॉकर छवि शुरू करने की कोशिश कर रहा हूं जो कैसंड्रा चलाता है। मुझे कैसंड्रा के साथ संवाद करने के लिए बहाव का उपयोग करने की आवश्यकता है, लेकिन ऐसा लगता है कि यह डिफ़ॉल्ट रूप से अक्षम है। कैसेंड्रा लॉग की जांच कर रहा दिखाता है:कैसंड्रा डॉकर

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

मेरे सवाल यह है: जब इस कैसेंड्रा कंटेनर शुरू कर मैं कैसे बचत सक्षम कर सकते हैं?

मैं कोई लाभ नहीं हुआ विभिन्न वातावरण चर सेट करने के लिए कोशिश की है:

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

जाहिर है, बचत RPC सर्वर कैसेंड्रा 2.2 के बाद से बंद कर दिया गया है, तो आप ताकि ग्राहकों को बचत का उपयोग कर सकते नए संस्करणों के लिए start_rpc = सच है, nodetool enablethrift सेट करना होगा। https://issues.apache.org/jira/browse/CASSANDRA-9319 – kisna

उत्तर

11

मुझे डॉकर कैसंद्रा छवि के साथ एक ही समस्या है। आप मेरे डॉकर कंटेनर को Github पर या डिफ़ॉल्ट कैसंड्रा छवि के बजाय Docker hub पर उपयोग कर सकते हैं।

समस्या यह है कि cassandra.yaml फ़ाइल में start_rpc को गलत पर सेट किया गया है। हमें इसे बदलने की जरूरत है। कि हम निम्नलिखित Dockerfile (जो कि मेरी छवि करता है) का उपयोग कर सकते करने के लिए:

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

धन्यवाद! मेरी भी यही समस्या थी। लेकिन अपने कांटे का उपयोग करने की बजाय (जो अंततः त्याग दिया जाएगा :-(), मैं बस 'डॉकर exec -it cass1 sed -i'/start_rpc चला रहा हूं। * $/Start_rpc: true/'/ etc/cassandra/cassandra.yaml' आधिकारिक कंटेनर चलाने के बाद। यह भी काम करता है! –

+0

@ h3nrik उत्तर अधिक सही है – alessiop86

2

मत भूलना run कमांड के साथ बचत ग्राहक एपीआई बंदरगाह का पर्दाफाश करने की तरह बाहर से कंटेनर उपयोग करने में सक्षम होने के लिए:

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

तुम भी अधिक बंदरगाहों का पर्दाफाश करने, CQL पोर्ट 9042, पोर्ट 7199 JMX, बंदरगाह 7000 और 7001 के बीच का नाजुक संचार के लिए के लिए के लिए की तरह कर सकते हैं।

19

sed वैकल्पिक हल (और बाद में कस्टम Dockerfiles कि केवल इस व्यवहार को सक्षम) अब आवश्यक है।

नया official Docker containers-e ध्वज का उपयोग कर CASSANDRA_START_RPC पर्यावरण चर का समर्थन करता है। उदाहरण के लिए:

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

यह सबसे सही उत्तर है – alessiop86