3

Being new to this topic, I have found quite many pros and cons about making data persistent while working with dockerized Cassandra. However, most of it was posted in 2016.

Now, I understand that it can depend on the specific case, but already googling the very question reveals a lot of debate which appears sometimes opiniated (and maybe also historically related to earlier versions of Docker and Cassandra which might have been improving over time and will in future, but maybe there is a conceptual flaw).

So I post this question to differentiate the pros and cons in a non-opiniated way in order to support finding a source or an answer which allows an architectural decision based on facts (or draws a working example, even for a specific case).

Myself is quite biased to Docker but as a DevOps engineer I think I have to learn which things work and which not, also understanding the WHY behind both.

Pros or seems to be quite ok but to prove:

  1. Production, yes or no: is there an real-world example of a large-scale Cassandra in a Swarm/Kubernetes environment? I thought, initially, yes?
  2. Guidelines like "Cassandra and Docker - Lessons learnt" (Slide 20)
  3. Docker Official Image packaging for Cassandra on GitHub

Cons/Criticism:

  1. Articles like "Thou shall not run a database in container" or "Why database are not for containers" (related yc debate)
  2. A colleague told me, Cassandra would store data associated with IP addresses and this makes usage of Docker/Cassandra not possible if you need data persistence - can't yet google up this but if there is no workaround this will make persistence impossible in my opinion.

Side note. Sometimes they say also, "don't do it in production #1, but integration environment is okay also without persistency #2". I want to learn more about #1 through this question and can't agree with #2 because sometimes you can have a huge effort to prepare already the sample data you need in the integration environment because the production data is yet bigger/complexer.

  • 2
    I have running in a semi-production environment elasticsearch and cassandra with data persistence as a stand alone DBs but it's a low usage environment. I wouldn't like to have this environment with a lot of nodes in a critical environment but I think the key is to perform enought performence tests to see if the performance obtained meet your requirements Casasndra doesn't need the IP for storage the information but also for comunicating with other nodes due to goship protocol. If you have replicated the information you won't have any problem – RuBiCK Aug 23 '17 at 7:44
2

Since you posted your original question, Datastax has come out with dockerized images of datastax enterprise, along with a comprehensive guide. I'd start with this reference and maybe check out this older "Best Practices" doc, although some details might have changed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.