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

Reply via email to