<div dir="ltr"><div class="gmail_extra">A quick update on this subject.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Using an Elastic IP won't help with AWS since that only binds to the public interface - not the internal private one. The hostname command still returns the same internal IP address as before, which is what's seen by Riak.</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">In AWS an internal IP address will actually persist across reboots. It does not persist across shutdown and startup.</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On 8 January 2013 10:16, Richard Shaw <span dir="ltr"><<a href="mailto:richard@basho.com" target="_blank">richard@basho.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


Hi Matt,<br>
<br>
Just to add to Charlie's suggestion, you could take a look at EC2 elastic IP addresses which would allow you to permanently map a public and private address to an EC2 instance, assignDNS hostnames and not have them change on reboot[1]<br>



<br>
[1] <a href="http://aws.amazon.com/articles/1346" target="_blank">http://aws.amazon.com/articles/1346</a><br>
<br>
Regards<br>
<span><font color="#888888"><br>
Richard<br>
</font></span><div><div><br>
On 7 Jan 2013, at 23:03, Charlie Voiselle <<a href="mailto:cvoiselle@basho.com" target="_blank">cvoiselle@basho.com</a>> wrote:<br>
<br>
> Matt:<br>
><br>
> You would need to use (or implement your own) DNS service that you could programmatically access--Route 53 has an API that you could use to create DNS entries that point to the internal addresses of your nodes.   In very carefully re-reading the thread Deepak mentions, one problem that will occur is that each node needs to be able to resolve the other nodes by name also.  The only way for this to occur reasonably, would be to register the internal addresses with a single point that they share.  Some examples of free services that you might use for this are DynDns[1], DNSDynamic[2], or DNS-O-Matic[3].   I have also seen some projects floating around the web that might enable you to create a self-hosted dynamic DNS like opendyn[4] and GnuDIP[5]; however, I have had no occasion to use something like this in my own environment.   Some additional discussion about creating your own Dynamic DNS server is also at <a href="http://unix.stackexchange.com/questions/29049/how-to-create-a-custom-dynamic-dns-solution" target="_blank">http://unix.stackexchange.com/questions/29049/how-to-create-a-custom-dynamic-dns-solution</a><br>



><br>
> Hope this helps!<br>
> Charlie<br>
><br>
> [1] <a href="http://www.dyn.com" target="_blank">http://www.dyn.com</a><br>
> [2] <a href="http://www.dnsdynamic.org" target="_blank">http://www.dnsdynamic.org</a><br>
> [3] <a href="http://www.dnsomatic.com" target="_blank">http://www.dnsomatic.com</a><br>
> [4] <a href="http://code.google.com/p/opendyn/" target="_blank">http://code.google.com/p/opendyn/</a><br>
> [5] <a href="http://gnudip2.sourceforge.net/" target="_blank">http://gnudip2.sourceforge.net/</a><br>
><br>
> On Jan 7, 2013, at 5:00 PM, Matt Black <<a href="mailto:matt.black@jbadigital.com" target="_blank">matt.black@jbadigital.com</a>> wrote:<br>
><br>
>> Thanks for this Charlie.<br>
>><br>
>> I'm running a production Riak cluster on AWS which runs constantly, and I've been wondering how I might be able to easliy stop and start AWS nodes for a testing and benchmarking cluster (to save on cost).<br>



>><br>
>> By using the 'riaknode1.priv' hostname method you describe, would I be able to stop and then restart a whole cluster of nodes at once? (As described by Deepak, AWS assigns new IPs when a VM starts).<br>
>><br>
>> Thanks<br>
>> Matt<br>
>><br>
>><br>
>> On 8 January 2013 01:31, Charlie Voiselle <<a href="mailto:cvoiselle@basho.com" target="_blank">cvoiselle@basho.com</a>> wrote:<br>
>> Deepak:<br>
>><br>
>> When you name a node in app.config with -name it has to have a '.' in it,  like <a href="mailto:riak@hostname.net" target="_blank">riak@hostname.net</a>  As you have surmised, you can get around that if you use the -sname argument instead.<br>



>><br>
>> They have to be done consistently.  In your example, had you used the -sname argument, `riak@riaknode1` would work.  Making a host entry `riaknode1.priv` that points to the local address would work with the -name argument.<br>



>><br>
>> The inportant thing about -name and -sname is that they can't mix within a cluster.<br>
>><br>
>> Cluster replace is designed to replace a node with a new one and transfer all the partitions. You can cheat and use it to rename a node though.<br>
>><br>
>> The process to do this would look like the following:<br>
>><br>
>>      • Stop the node to rename with `riak stop`<br>
>>      • Mark it 'down' from another node in the cluster using `riak-admin down «old nodename».<br>
>>      • Rename the node in vm.args.<br>
>>      • Delete the ring directory.<br>
>>      • Start the node with `riak start`.<br>
>>      • It will come up as a single instance which you can verify with `riak-admin member-status`.<br>
>>      • Join the node to the cluster with `riak-admin cluster join «cluster nodename» `<br>
>>      • Set it to replace the old instance of itself with `riak-admin cluster replace «old nodename» «new nodename»<br>
>>      • Plan the changes with `riak-admin cluster plan`<br>
>>      • Commit the changes with `riak-admin cluster commit`<br>
>><br>
>> As you can see, this is a very large effort, so best to use hostnames that aren't moving around.  Apologies for you getting this twice, Deepak. I failed to reply to the list as well.<br>
>><br>
>> Hope this makes sense...<br>
>> Charlie<br>
>><br>
>> On Jan 1, 2013, at 2:43 PM, Deepak Balasubramanyam <<a href="mailto:deepak.balu@gmail.com" target="_blank">deepak.balu@gmail.com</a>> wrote:<br>
>><br>
>>> I took the AWS EC2 riak image for a spin today. I have a query regarding riak nodes and how they behave when the machine reboots.<br>
>>><br>
>>> When an EC2 instance reboots, the internal ip / internal DNS / external DNS change. This renders the app.config and -name argument on vm.args incorrect. I was exploring solutions to deal with this problem.<br>



>>><br>
>>> 1. Preventive measures<br>
>>><br>
>>> Someone on this thread dated May 2011 suggested using host file entries that point to the local internal IP address. That does not seem to work. Riak fails with the following error when I add a new entry to /etc/hosts and configure vm.args with -name riak@riaknode1<br>



>>><br>
>>> Hostname riaknode1 is illegal<br>
>>><br>
>>> I confirmed that riaknode1 pings correctly before starting riak. I guess erlang tries to match the hostname of the system resulting in this failure ? Can anyone throw some light on this ?<br>
>>><br>
>>> 2. Use -sname<br>
>>><br>
>>> Is starting the erlang VM with the sname flag an option if it will help prevent the 'illegal hostname' error ?<br>
>>> Disclaimer: My knowledge of erlang is close to zilch, so sorry if that option sounded like something you could dismiss easily :)<br>
>>><br>
>>> 3. Use cluster replace<br>
>>><br>
>>> a. I understand that the IPs in app.config and vm.args can be replaced with the correct IP on a restart and using a subsequent 'cluster replace' command will do. Will executing the 'cluster plan' and 'cluster commit' commands now produce network chatter ?<br>



>>><br>
>>> b . What happens if 2 nodes go down and one was joined with the other. They both have 2 different IP addresses on restart. How will 'cluster replace' work now ?<br>
>>><br>
>>> Do let me know your thoughts.<br>
>>><br>
>>> Thanks<br>
>>> -Deepak<br>
>>> _______________________________________________<br>
>>> riak-users mailing list<br>
>>> <a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br>
>>> <a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
>><br>
>><br>
>> _______________________________________________<br>
>> riak-users mailing list<br>
>> <a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br>
>> <a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
>><br>
>><br>
><br>
> _______________________________________________<br>
> riak-users mailing list<br>
> <a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br>
> <a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
<br>
</div></div></blockquote></div><br></div></div>