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

Reply via email to