I’ve always thought “Cassandra” was a particularly ill-omened name, so I went with the picture, not the logo.
Subtitle: How did I function before the Internet?
It was a bit painful, but I did it. A three node Cassandra cluster configured in docker-compose inside a CentOS VM running on Windows 10.
The volume configuration is wrong. I know this because I brought it down, then back up again and all my data was gone. This might have had something to do with the fact that I moved the .yaml file, which changed the docker-compose project while using the auto-allocate storage. I’ll point it somewhere explicitly, but not today.
For posterity, my first YAML file:
version: '3' services: trio-seed: image: cassandra environment: - CASSANDRA_CLUSTER_NAME=trio # - LOCAL_JMX=no -- allows out-of-container access to JMX, which nodetool uses # The alternative: # docker exec trio-seed nodetool status ports: - 7000:7000 - 9042:9042 # Native Transport (i.e. client) - 7199:7199 # JMX - 9160:9160 # Thrift volumes: - cass-dataA:/var/lib/cassandra networks: - cass-net # The seed node must be up-and-running, first, so give it some time trio-nodeB: image: cassandra command: /bin/bash -c "echo 'Waiting for seed node' && sleep 30 && docker-entrypoint.sh cassandra -f" environment: - CASSANDRA_CLUSTER_NAME=trio - CASSANDRA_SEEDS=trio-seed depends_on: - trio-seed ports: - 9043:9042 volumes: - cass-dataB:/var/lib/cassandra networks: - cass-net # Multiple nodes cannot join at the same time, so give it a different amount of time # nodeB is taking a long time to come up because it pauses inside startup: # JOINING: sleeping 30000 ms for pending range setup # make this YUGE trio-nodeC: image: cassandra command: /bin/bash -c "echo 'Waiting for seed node' && sleep 120 && docker-entrypoint.sh cassandra -f" environment: - CASSANDRA_CLUSTER_NAME=trio - CASSANDRA_SEEDS=trio-seed depends_on: - trio-nodeB ports: - 9044:9042 volumes: - cass-dataC:/var/lib/cassandra networks: - cass-net volumes: cass-dataA: driver: local cass-dataB: driver: local cass-dataC: driver: local networks: cass-net: name: cass-net
Update: The trick is noticing that docker-compose down has a “remove” step and that docker ps -a does not show the “downed” containers. This destroys their disk. I mapped explicit directories and all is fine.
One thought on “Cassandra Up”