Skip to content

Latest commit

 

History

History
37 lines (31 loc) · 1.72 KB

README.md

File metadata and controls

37 lines (31 loc) · 1.72 KB

Cassandra Cluster in Docker

A docker-compose blueprint that describes a 3 node Cassandra cluster. It only exposes important Cassandra ports on the seed node to the host machine. Internally, all of the nodes will be a part of the same Docker network and will form a cluster using that Docker network.

Instructions

In order to bring up the cluster:

  • Use docker-compose up to see the logs of all the containers
  • Use docker-compose up -d if you want it to run in the foreground

In order to clean up the cluster, use docker-compose down

Notes

You need to make sure that the Docker daemon has enough of resources otherwise you will encounter exit code 137 (Out of Memory Killer) on your containers.

When you create a single node cluster and you try to add more nodes to the cluster, you must add them one by one. This means that you cannot have multiple nodes join the cluster (by pointing to the seed node) at the same time. You must add a cluster, wait for it to join the ring and stabilize before you can begin to add another cluster. This is why you will see an additional delay on start up between the non-seed nodes. If you attempt to join a new node whilst stabilization has not yet been achieved, you will see an error like this:

ERROR [main] 2017-08-22 23:19:11,055 CassandraDaemon.java:706 - Exception encountered during startup
java.lang.UnsupportedOperationException: Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while cassandra.consistent.rangemovement is true

This article discusses the implications of turning cassandra.consistent.rangemovement off.

Credits