My script to upgrade our first node in QA is thus (basically, snapshot, drain, stop, then switch over then start)…
#!/bin/bash export NODE=$1 export VERSION=1.1.4 export USER=cassandra #NOTE: This script requires you have cassandra 1.2.2 in /opt/cassandra-1.2.2 but # feel free to modify if you like #Move the newest cassandra.yaml to the node scp cassandra.yaml $USER@$NODE:/opt/cassandra/conf #As cassandra user, snapshot then drain the node # and finally shut down cassandra on that node ssh $USER@$NODE <<\EOF nodetool snapshot $VERSION nodetool drain pkill -f 'java.*cassandra' EOF #Now, our .bashrc for cassandra has /opt/cassandra/bin in it's path # so we unlink and the link to the new cassandra as root since only root has # access to the opt directory. ssh root@$NODE <<\EOF rm /opt/cassandra ln -s /opt/cassandra-1.2.2 /opt/cassandra EOF #We should start cassandra ourselves probably....so we can watch the cluster as it joins the node #especially for the very first node we do... #Now as cassandra user, start up the cassandra node and then do manual health checks #ssh $USER@$NODE <<\EOF # cassandra #EOF