As an aside, you can also use that command to pull meta-data about instances in AWS. I have implemented this to maintain a list of seed nodes. This way, when a new instance is brought online, the default cassandra.yaml is `enhanced` to contain a dynamic list of valid seeds, proper hostname and a few other bits of useful information.
Finally, if you aren't using a single security group for all of your cassandra instances, maybe this may be of help to you. When we add new nodes to our ring, we add them to a single cassandra security group. No messing about with security groups per instance... -sd On Thu, May 26, 2011 at 2:36 PM, Marcus Bointon <mar...@synchromedia.co.uk> wrote: > Thanks for all your helpful suggestions - I've now got it working. It was > down to a combination of things. > > 1. A missing rule in a security group > 2. A missing DNS name for the new node, so its default name was defaulting to > localhost > 3. Google DNS caching the failed DNS lookup for the full duration of the > SOA's TTL > > In order to avoid the whole problem with assigning IPs using the > internal/external trick and using up elastic IPs, I found this service which > I'd not seen before: > http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your-amazon-ec2-instances/ > > This means you can reliably set (and reset as necessary) a listen address > with this command: > > sed -i "s/^listen_address:.*/listen_address: `curl > http://169.254.169.254/latest/meta-data/local-ipv4`/" > /etc/cassandra/cassandra.yaml > > It's not quite as good as having a true dynamic hostname, but at least you > can drop it in a startup script and forget it. > > Marcus