Re: 1.4.2: 'riak-admin reip' no longer works?

2013-10-21 Thread Brady Wetherington
Huh. I thought we were supposed to use force-replace instead of reip?

I remember having a discussion a few months back about the documentation
and we cleared it up a little.

Is reip the same as force-replace, or is it more...quick-and-dirty?
Is it deprecated?

-B.


On Mon, Oct 21, 2013 at 11:33 AM, Dave Brady dbr...@weborama.com wrote:

 Thanks for clarifying it!

 This functionality has been *great* to create quick-and-dirty test rings.

 --
 Dave Brady

 --
 *From: *Jared Morrow ja...@basho.com
 *To: *Dave Brady dbr...@weborama.com
 *Cc: *Riak Users Mailing List riak-users@lists.basho.com
 *Sent: *Lundi 21 Octobre 2013 16:42:22

 *Subject: *Re: 1.4.2: 'riak-admin reip' no longer works?

 We actually discussed this recently, my understanding of reip was clearly
 not complete, and Joe Caswell put me on the right track.  'reip' will
 continue to stick around.

 -Jared


 On Mon, Oct 21, 2013 at 8:23 AM, Dave Brady dbr...@weborama.com wrote:

 No problem, Jared!  I'm happy it was a very simple fix.

 What concerns me is that the 'cluster' commands do not have an analogous
 feature: 'replace' does not do the same thing as 'reip'.

 Is it truly a foregone conclusion that 'reip' is going away?

 --
 Dave Brady

 --
 *From: *Jared Morrow ja...@basho.com
 *To: *Dave Brady dbr...@weborama.com
 *Cc: *Riak Users Mailing List riak-users@lists.basho.com
 *Sent: *Lundi 21 Octobre 2013 16:17:52
 *Subject: *Re: 1.4.2: 'riak-admin reip' no longer works?


 This was a mistake on my part, if you s/up/down/ (node_down_check) on
 that line it will correctly ensure the node is down before running reip.
  Sorry about that, clearly 'reip' is not heavily used with the new cluster
 commands and it slipped under the radar for all these months.

 -Jared


 On Mon, Oct 21, 2013 at 7:48 AM, Dave Brady dbr...@weborama.com wrote:

 Thanks to Joe Caswell at Basho: just have to comment out line 382
 (node_up_check) in the riak-admin script.

 --
 Dave Brady

 - Original Message -
 From: Dave Brady dbr...@weborama.com
 To: riak-users@lists.basho.com
 Sent: Lundi 21 Octobre 2013 13:59:37
 Subject: 1.4.2: 'riak-admin reip' no longer works?

 Hi everyone,

 So, I went to copy /var/lib/riak/* from one five-node cluster to
 another, so that we could experiment on the data.

 I did this fairly frequently in the past ( 1.4.0), and always used
 riak-admin reip old new.

 Now, when I try that command on our 1.4.2 ring, 'riak-admin' dies with
 Node is not running!

 This confuses me, since reip requires the ring to be down, but the
 riak-admin script is indeed expecting the local node to be running when
 using this option.

 I see on the wiki that it is mentioned that cluster replace will
 replace reip in the future.  I hope not, since cluster replace does not
 provide the same functionality.

 Anyone run into this and find a fix?  (Or I am missing something
 obvious?)

 Thanks!

 --
 Dave Brady


 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com






 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


2i Index Durability/Resilience

2013-10-07 Thread Brady Wetherington
What happens to your 2i indexes if you do a write and one of the nodes
you're trying to write to is down?

http://docs.basho.com/riak/latest/dev/using/2i/ says:


   - When you want or need anti-entropy. Since 2i is just metadata on the
   KV object and the indexes reside on the same node, 2i piggybacks off of
   read-repair.

But
http://docs.basho.com/riak/latest/ops/running/recovery/repairing-indexes/says:

Riak Secondary indexes (2i) currently have no form of anti-entropy (such as
read-repair). Furthermore, for performance and load balancing reasons, 2i
reads from 1 random node. This means that when a replica loss has occurred,
inconsistent results may be returned.
I am building a solution around 2i - so I just wanted to know if there was
any way to clarify these points - how resilient are these indexes? Under
what circumstances will they stop working (or return inconsistent results)?

-B.
___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


Re: allow_mult vs. 2i

2013-09-28 Thread Brady Wetherington
I'm doing the POST/PUT to the bucket thing, where it makes a key for me.

-B.

 On Sep 28, 2013, at 3:53 PM, Runar Jordahl runar.jord...@gmail.com wrote:
 
 Yes, you are correct. Setting allow_mult will not be needed with your setup. 
 I then assume the clients are guaranteed to use unique key when creating the 
 objects.
 
 Runar
 
 
 2013/9/27 Brady Wetherington br...@bespincorp.com
 
 Since I'm doing a write-once, update-never environment - I don't see how 
 allow_mult would help me otherwise? A new write will always be to a new key. 
 There will never be an update. So if that's the case - no need for 
 allow_mult. Does that sound right?
___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


Re: allow_mult vs. 2i

2013-09-26 Thread Brady Wetherington
Oh, I get what the siblings/allow_mult business is for, just wondering if I
can use it off-label a little, and eventually do 'conflict resolution'
which would make the results be much more reasonable.

But it sounds like I shouldn't do that. That's totally fine.

Since I'm doing a write-once, update-never environment - I don't see how
allow_mult would help me otherwise? A new write will always be to a new
key. There will never be an update. So if that's the case - no need for
allow_mult. Does that sound right?

-B.


On Wed, Sep 25, 2013 at 6:30 PM, Jeremiah Peschka 
jeremiah.pesc...@gmail.com wrote:

 inline.

 ---
 Jeremiah Peschka - Founder, Brent Ozar Unlimited
 MCITP: SQL Server 2008, MVP
 Cloudera Certified Developer for Apache Hadoop


 On Wed, Sep 25, 2013 at 2:47 PM, Brady Wetherington 
 br...@bespincorp.comwrote:

 I've built it a solid proof-of-concept system on leveldb, and use some 2i
 indexes in order to search for certain things - usually just for counts of
 things.

 I have two questions so far:

 First off, why is Bitcask the default? Is it just because it is faster?
 Or is it considered more 'stable' or something?


 Long ago, when bitcask was elected as the default, LevelDB was not a
 thing.

 Databases strive for stability and the principle of least surprise.
 Changing anything can potentially introduce performance regressions,
 stability problems, and any host of other undesirable and reputation
 destroying things.

 Changing the storage back end is high up on the list of things I'd never
 want to do in a database. Why do you think MySQL still defaults to MyISAM?



 Next, I've learned about the allow_mult feature you can set on buckets. I
 wonder if I should use this for my most heavily-used primary-purpose
 queries? Is there a limit to how many 'siblings' you can have for an entry?
 Is it inadvisable to do what I'm talking about? Would fetching all of the
 siblings end up being a disastrous nightmare or something?


 The upper limit will depend on the size of your objects. You don't want to
 have object sizes (including siblings) much beyond 6MB. You'll have a lot
 of network congestion. You certainly *could* have bigger object + sibling
 collections, but you'd want to beef up the network backend to something
 like 10GbE, 40GbE, or InfiniBand to deal with the increased gossip.

 Fetching all of your siblings is bad if you never resolve siblings since
 you'll have a lot of data.

 Allow_mult is typically turned on for production clusters. This is set off
 by default to help new users get a handle on Riak quickly without having to
 worry about siblings. Once you get the hang of how Riak behaves, turning on
 siblings is usually a good thing.

 Depending on resolution, it's probably best to read your data, resolve
 siblings, and send that garbage collected object back to Riak - even if
 you're performing a read only query. The new Riak DT features eliminate
 some of the worry about siblings by pushing the responsibility back down to
 Riak. Those features are only available if you're building from source, but
 hopefully Riak 2.0 will be out soon.


 I *assume* - and I could be wrong - that a 2i query would be slower than
 a fetch-of-siblings for a particular key - is that wrong?

 If I switch from using 2i indexes to using allow_mult and siblings, we'd
 be talking a few hundred thousand to low millions for a sibling-count.


 I do not think 'siblings' means what you think it means.

 A sibling would occur if two clients, A and B, read v1 of an object and
 then issue writes.

 Client A updates object and sets preferences to ['cat pictures', 'ham
 sandwiches']
 Client B updates object and sets preferences to ['knitting with bacon']

 With allow_mult enabled you'd have two versions of the object. These are
 siblings.

 If you're thinking of some kind of index created by your application, you
 could look at 2i vs using siblings to build a secondary index:
 http://basho.com/index-for-fun-and-for-profit/ Even when you're creating
 your own secondary index, you still want to perform garbage collection on
 the data you're storing in Riak.


 Thanks for making an excellent product! Can't wait to get this bad boy
 into production and really see what it can do!

 -B.

 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com



 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


allow_mult vs. 2i

2013-09-25 Thread Brady Wetherington
I've built it a solid proof-of-concept system on leveldb, and use some 2i
indexes in order to search for certain things - usually just for counts of
things.

I have two questions so far:

First off, why is Bitcask the default? Is it just because it is faster? Or
is it considered more 'stable' or something?

Next, I've learned about the allow_mult feature you can set on buckets. I
wonder if I should use this for my most heavily-used primary-purpose
queries? Is there a limit to how many 'siblings' you can have for an entry?
Is it inadvisable to do what I'm talking about? Would fetching all of the
siblings end up being a disastrous nightmare or something? I *assume* - and
I could be wrong - that a 2i query would be slower than a fetch-of-siblings
for a particular key - is that wrong?

If I switch from using 2i indexes to using allow_mult and siblings, we'd be
talking a few hundred thousand to low millions for a sibling-count.

Thanks for making an excellent product! Can't wait to get this bad boy into
production and really see what it can do!

-B.
___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


Re: DELETE and vclocks

2013-09-23 Thread Brady Wetherington
Well, I'm not sure, and I'm new to Riak too, but I *think* you'd need to
set allow_multi on the bucket.

-B.


On Mon, Sep 23, 2013 at 4:01 AM, Gints gints.gaili...@gmail.com wrote:

 I did a PUT, and the vclock that came back was:
 a85hYGBgzGDKBVIcypz/fgZJFylnMCUy5rEyNOdtOc2XBQA=

 Then I read the object back, modified it, and PUT it again, providing the
 old vclock, and got a new vclock:
 a85hYGBgzGDKBVIcypz/fgZJFylnMCUy5bEyNOdtOc2XBQA=

 (Notice they are slightly different: Uy5rEy - Uy5bEy)

 Then, I did a DELETE, using the first vector clock, not the second, updated
 one.

 After that the object was gone, I could not find it in the database any
 more.

 Is this supposed to be like that - deleting an object providing a stale
 vclock actually deletes it? Or am I probably doing something wrong?

 Thanks,
 Gints




 --
 View this message in context:
 http://riak-users.197444.n3.nabble.com/DELETE-and-vclocks-tp4029176.html
 Sent from the Riak Users mailing list archive at Nabble.com.

 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


Re:

2013-09-09 Thread Brady Wetherington
I've been working with Basho to get those documents updated - in short - I
have a pull request that makes using Riak with EIP's in Classic-EC2 much,
much easier. They have accepted it, but it has not been merged with the
mainline yet. I'm assuming you are *not* on VPC, is that correct?

If so, you should use the ec2 public DNS name as your node identifier
instead. For the IP you listed above, that's:

ec2-54-247-68-179.eu-west-1.compute.amazonaws.com

If you find that name ungainly - go head and make a CNAME that points to it
-

riak-1.yourcompany.com CNAME
ec2-54-247-68-179.eu-west-1.compute.amazonaws.com

Once you've done this, you can use that shortname (riak-1.yourcompany.com)
as your node identifier - and it will survive a node restart (so long as
you reassociate the EIP with the instance).

The reason *why* this works is that that public DNS name (
ec2-54-247-68-179.eu-west-1.compute.amazonaws.com) resolves to the _inside_
IP address of your node when you're inside of amazon. So your server can
figure out whether or not it's talking to itself.

-B.


On Mon, Sep 9, 2013 at 7:38 AM, David Montgomery
davidmontgom...@gmail.comwrote:

 Why do I get errors restarting riak when i use aws EIP's?

 I change the ip address per this doc.
 http://docs.basho.com/riak/1.2.1/cookbooks/Basic-Cluster-Setup/  I am
 using the latest version of riak for ubuntu 12.04

 I change the 127.0.0.1 to the EIP.  It should work.  Yetriak will not
 work.  Any issues I am missing?  How do I resolve?


 console.log
 2013-09-09 11:28:28.211 [info] 0.7.0 Application webmachine started on
 node 'riak@54.247.68.179'
 2013-09-09 11:28:28.211 [info] 0.7.0 Application basho_stats started on
 node 'riak@54.247.68.179'
 2013-09-09 11:28:28.229 [info] 0.7.0 Application bitcask started on node
 'riak@54.247.68.179'
 2013-09-09 11:28:29.385 [error] 0.172.0 CRASH REPORT Process 0.172.0
 with 0 neighbours exited with reason: eaddrnotavail in gen_server:init_it/6
 line 320
 2013-09-09 11:28:29.385 [error] 0.138.0 Supervisor riak_core_sup had
 child http_54.247.68.179:8098 started with
 webmachine_mochiweb:start([{name,http_54.247.68.179:8098},{ip,54.247.68.179},{p$
 2013-09-09 11:28:29.387 [info] 0.7.0 Application riak_core exited with
 reason: {shutdown,{riak_core_app,start,[normal,[]]}}

 error.log
 013-09-09 11:08:13.109 [error] 0.138.0 Supervisor riak_core_sup had
 child riak_core_capability started with riak_core_capability:start_link()
 at 0.156.0 exit with reason no function clause match$
 2013-09-09 11:08:13.110 [error] 0.136.0 CRASH REPORT Process 0.136.0
 with 0 neighbours exited with reason: {{function_clause,[{orddict,fetch,['
 riak@10.239.130.225',[{'riak@127.0.0.1',[{{riak_cont$
 2013-09-09 11:08:34.956 [error] 0.156.0 gen_server riak_core_capability
 terminated with reason: no function clause matching orddict:fetch('
 riak@10.239.130.225', [{'riak@127.0.0.1',[{{riak_control,m$
 2013-09-09 11:08:34.957 [error] 0.156.0 CRASH REPORT Process
 riak_core_capability with 0 neighbours exited with reason: no function
 clause matching orddict:fetch('riak@10.239.130.225', [{'riak@127.$
 2013-09-09 11:08:34.957 [error] 0.140.0 Supervisor riak_core_sup had
 child riak_core_capability started with riak_core_capability:start_link()
 at 0.156.0 exit with reason no function clause match$
 2013-09-09 11:08:34.958 [error] 0.138.0 CRASH REPORT Process 0.138.0
 with 0 neighbours exited with reason: {{function_clause,[{orddict,fetch,['
 riak@10.239.130.225',[{'riak@127.0.0.1',[{{riak_cont$
 2013-09-09 11:10:56.863 [error] 0.154.0 gen_server riak_core_capability
 terminated with reason: no function clause matching orddict:fetch('
 riak@54.247.68.179', []) line 72
 2013-09-09 11:10:56.864 [error] 0.154.0 CRASH REPORT Process
 riak_core_capability with 0 neighbours exited with reason: no function
 clause matching orddict:fetch('riak@54.247.68.179', []) line 72 i$

 [ Read 32 lines ]






 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


Re: Riak-CS , S3cmd and A single Node outage on a 3 node cluster

2013-08-23 Thread Brady Wetherington
Oh, I thought the rule was if you have one more node than your n_val, then
you can be sure each replica will be on a distinct node - is that not
correct?

Also with n of 2 I would wonder how you would handle r and w - my guess
would be you *could* set them to 1 each, and just deal with possible
consistency issues if you lost a node. But it would be 'weird' in that you
wouldn't really have a quorum to make - it'd be whoever is up right now
wins. And then - when the downed node comes back - you might spit back
inconsistent answers until AAE fixes up your data. Read-repair would *not*
end up fixing your data up, because the r value of 1 would be satisfied.
Does that sound right?

I'm asking not only for the original poster; but to make sure I understand
what I've got here for myself too!

-B.




On Thu, Aug 22, 2013 at 1:41 PM, Kelly McLaughlin ke...@basho.com wrote:

 Idan,

 Actually in the case you described of using a 3 node Riak cluster with
 n_val of 2 the behavior you see makes perfect sense. When using only three
 nodes Riak does not guarantee that all replicas of an object will be on
 distinct physical nodes. So if you have one node down you can hit a case
 where both of the replicas of an object stored in Riak live on the downed
 node. This explains the reason you see occasional failure to retrieve an
 object with s3cmd, but most of the time it works just fine. It is for this
 reason we strongly recommend people to use at least 5 nodes in their
 production deployments. For testing, using at least use 4 nodes in the
 cluster will likely reduce the chances of this situation occurring versus
 using only 3.

 Also just be very cautious about reducing the n_val to 2. You will save on
 storage space doing that, but there is a trade-off to be made in
 availability and performance in doing so.

 Hope that helps shed some light.

 Kelly

 On August 22, 2013 at 10:12:06 AM, Idan Shinberg (idan.shinb...@idomoo.com)
 wrote:

 Thanks for the aid

 This is a testing environemt . no-one accesses it aside of me

 Prior to creating the objects via riak-cs , I set the cluster to n_val 2
 for the default bucket props .
 On that empty cluster , i started creating objects . ( around 500) .
 Then I stopped and killed one of the nodes .
 Then the issues mentioned above were seen.

 still doesn't make any  sense...

 Regards,

 Idan Shinberg


 System Architect

 Idomoo Ltd.



 Mob +972.54.562.2072

 email idan.shinb...@idomoo.com

 web www.idomoo.com

 [image: Description:
 file:///Users/kelly/Library/Containers/it.bloop.airmail/Data/Library/Application
 Support/Airmail/General/Local/1377192732334581760/Attachments/fc66336e-e750-4c2d-b6e3-985d5a06b...@idomoo.co.il]


 ___
 riak-users mailing list
 riak-users@lists.basho.com
 http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


Re: Practical Riak cluster choices in AWS (number of nodes? AZ's?)

2013-08-13 Thread Brady Wetherington
That *does* sound like an interesting way to do it. Kinda
best-of-both-worlds, depending on your backup schemes and whatnot. I'm
definitely curious to hear about how it works out for you.

-B.


On Tue, Aug 13, 2013 at 4:03 PM, Dave Martorana d...@flyclops.com wrote:

 An interesting hybrid that I'm coming around to seems to be using a Unix
 release - OmniOS has an AMI, for instance - and ZFS. With a large-enough
 store, I can run without EBS on my nodes, and have a single ZFS backup
 instance with a huge amount of slow-EBS storage for accepting ZFS snapshots.

 I'm still learning all the pieces, but luckily I have a company upstairs
 from me that does a very similar thing with  300TB and is willing to help
 me set up my ZFS backup infrastructure.

 Dave


 On Mon, Aug 12, 2013 at 10:00 PM, Brady Wetherington br...@bespincorp.com
  wrote:

 I will probably stick with EBS-store for now. I don't know how
 comfortable I can get with a replica that could disappear with simply an
 unintended reboot (one of my nodes just did that randomly today, for
 example). Sure, I would immediately start rebuilding it as soon as that
 were to happen, but we could be talking a pretty huge chunk of data that
 would have to get rebuilt out of the cluster. And that sounds scary. Even
 though, logically, I understand that it should not be.

 I will get there; I'm just a little cautious. As I learn Riak better and
 get more comfortable with it, maybe I would be able to start to move in a
 direction like that. And certainly as the performance characteristics of
 EBS-volumes start to bite me in the butt; that might force me to get
 comfortable with instance-store real quick. I would at least hope to be
 serving a decent-sized chunk of my data from memory, however.

 As for throwing my instances in one AZ - I don't feel comfortable with
 that either. I'll try out the way I'm saying and will report back - do I
 end up with crazy latencies all over the map, or does it seem to just
 work? We'll see.

 In the meantime, I still feel funny about breaking the rules on the
 5-node cluster policy. Given my other choices as having been kinda
 nailed-down for now, what do you guys think of that?

 E.g. - should I take the risk of putting a 5th instance up in the same AZ
 as one of the others, or should I just be ok with having 4? Or should I
 do something weird like changing my 'n' value to be one fewer or something
 like that? (I think, as I understand it so far, I'm really liking n=3,
 w=2, r=2 - but I could change it if it made more sense with the topology
 I've selected.)

 -B.


 Date: Sun, 11 Aug 2013 18:57:11 -0600
 From: Jared Morrow ja...@basho.com
 To: Jeremiah Peschka jeremiah.pesc...@gmail.com
 Cc: riak-users riak-users@lists.basho.com
 Subject: Re: Practical Riak cluster choices in AWS (number of nodes?
 AZ's?)
 Message-ID:
 
 cacusovelpu8yfcivykexm9ztkhq-kdnowk1afvpflcsip2h...@mail.gmail.com
 Content-Type: text/plain; charset=iso-8859-1


 +1 to what Jeremiah said, putting a 4 or 5 node cluster in each US West
 and
 US East using MDC between them would be the optimum solution.  I'm also
 not
 buying consistent latencies between AZ's, but I've also not tested it
 personally in a production environment.  We have many riak-users members
 on
 AWS, so hopefully more experienced people will chime in.

 If you haven't seen them already, here's what I have in my Riak on AWS
 bookmark folder:

 http://media.amazonwebservices.com/AWS_NoSQL_Riak.pdf
 http://docs.basho.com/riak/latest/ops/tuning/aws/
 http://basho.com/riak-on-aws-deployment-options/

 -Jared




 On Sun, Aug 11, 2013 at 6:11 PM, Jeremiah Peschka 
 jeremiah.pesc...@gmail.com wrote:

  I'd be wary of using EBS backed nodes for Riak - with only a single
  ethernet connection, it wil be very easy to saturate the max of
 1000mbps
  available in a single AWS NIC (unless you're using cluster compute
  instances). I'd be more worried about temporarily losing contact with a
  node through network saturation than through AZ failure, truthfully.
 
  The beauty of Riak is that a node can drop and you can replace it with
  minimal fuss. Use that to your advantage and make every node in the
 cluster
  disposable.
 
  As far as doubling up in one AZ goes - if you're worried about AZ
 failure,
  you should treat each AZ as a separate data center and design your
 failure
  scenarios accordingly. Yes, Amazon say you should put one Riak node in
 each
  AZ; I'm not buying that. With no guarantee around latency, and no
 control
  around between DCs, you need to be very careful how much of that
 latency
  you're willing to introduce into your application.
 
  Were I in your position, I'd stand up a 5 node cluster in US-WEST-2
 and be
  done with it. I'd consider Riak EE for my HA/DR solution once the
 business
  decides that off-site HA/DR is something it wants/needs.
 
 
  ---
  Jeremiah Peschka - Founder, Brent Ozar Unlimited
  MCITP: SQL Server 2008, MVP
  Cloudera Certified

Re: Practical Riak cluster choices in AWS (number of nodes? AZ's?)

2013-08-12 Thread Brady Wetherington
I will probably stick with EBS-store for now. I don't know how comfortable
I can get with a replica that could disappear with simply an unintended
reboot (one of my nodes just did that randomly today, for example). Sure, I
would immediately start rebuilding it as soon as that were to happen, but
we could be talking a pretty huge chunk of data that would have to get
rebuilt out of the cluster. And that sounds scary. Even though, logically,
I understand that it should not be.

I will get there; I'm just a little cautious. As I learn Riak better and
get more comfortable with it, maybe I would be able to start to move in a
direction like that. And certainly as the performance characteristics of
EBS-volumes start to bite me in the butt; that might force me to get
comfortable with instance-store real quick. I would at least hope to be
serving a decent-sized chunk of my data from memory, however.

As for throwing my instances in one AZ - I don't feel comfortable with that
either. I'll try out the way I'm saying and will report back - do I end up
with crazy latencies all over the map, or does it seem to just work?
We'll see.

In the meantime, I still feel funny about breaking the rules on the
5-node cluster policy. Given my other choices as having been kinda
nailed-down for now, what do you guys think of that?

E.g. - should I take the risk of putting a 5th instance up in the same AZ
as one of the others, or should I just be ok with having 4? Or should I
do something weird like changing my 'n' value to be one fewer or something
like that? (I think, as I understand it so far, I'm really liking n=3,
w=2, r=2 - but I could change it if it made more sense with the topology
I've selected.)

-B.


Date: Sun, 11 Aug 2013 18:57:11 -0600
 From: Jared Morrow ja...@basho.com
 To: Jeremiah Peschka jeremiah.pesc...@gmail.com
 Cc: riak-users riak-users@lists.basho.com
 Subject: Re: Practical Riak cluster choices in AWS (number of nodes?
 AZ's?)
 Message-ID:
 
 cacusovelpu8yfcivykexm9ztkhq-kdnowk1afvpflcsip2h...@mail.gmail.com
 Content-Type: text/plain; charset=iso-8859-1

 +1 to what Jeremiah said, putting a 4 or 5 node cluster in each US West and
 US East using MDC between them would be the optimum solution.  I'm also not
 buying consistent latencies between AZ's, but I've also not tested it
 personally in a production environment.  We have many riak-users members on
 AWS, so hopefully more experienced people will chime in.

 If you haven't seen them already, here's what I have in my Riak on AWS
 bookmark folder:

 http://media.amazonwebservices.com/AWS_NoSQL_Riak.pdf
 http://docs.basho.com/riak/latest/ops/tuning/aws/
 http://basho.com/riak-on-aws-deployment-options/

 -Jared




 On Sun, Aug 11, 2013 at 6:11 PM, Jeremiah Peschka 
 jeremiah.pesc...@gmail.com wrote:

  I'd be wary of using EBS backed nodes for Riak - with only a single
  ethernet connection, it wil be very easy to saturate the max of 1000mbps
  available in a single AWS NIC (unless you're using cluster compute
  instances). I'd be more worried about temporarily losing contact with a
  node through network saturation than through AZ failure, truthfully.
 
  The beauty of Riak is that a node can drop and you can replace it with
  minimal fuss. Use that to your advantage and make every node in the
 cluster
  disposable.
 
  As far as doubling up in one AZ goes - if you're worried about AZ
 failure,
  you should treat each AZ as a separate data center and design your
 failure
  scenarios accordingly. Yes, Amazon say you should put one Riak node in
 each
  AZ; I'm not buying that. With no guarantee around latency, and no control
  around between DCs, you need to be very careful how much of that latency
  you're willing to introduce into your application.
 
  Were I in your position, I'd stand up a 5 node cluster in US-WEST-2 and
 be
  done with it. I'd consider Riak EE for my HA/DR solution once the
 business
  decides that off-site HA/DR is something it wants/needs.
 
 
  ---
  Jeremiah Peschka - Founder, Brent Ozar Unlimited
  MCITP: SQL Server 2008, MVP
  Cloudera Certified Developer for Apache Hadoop
 
 
  On Sun, Aug 11, 2013 at 1:52 PM, Brady Wetherington 
 br...@bespincorp.comwrote:
 
  Hi all -
 
  I have some questions about how I want my Riak stuff to work - I've
  already asked these questions of some Basho people and gotten some
 answers,
  but thought I would toss it out into the wider world to see what you all
  have to say, too:
 
  First off - I know 5 instances is the magic number of instances to
  have. If I understand the thinking here, it's that at the default
  redundancy level ('n'?) of 3, it is most likely to start getting me some
  scaling (e.g., performance  just that of a single node), and yet also
 have
  redundancy; whereby I can lose one box and not start to take a
 performance
  hit.
 
  My question is - I think I can only do 4 in a way that makes sense. I
  only have 4 AZ's that I can use right now; AWS won't let me

Practical Riak cluster choices in AWS (number of nodes? AZ's?)

2013-08-11 Thread Brady Wetherington
Hi all -

I have some questions about how I want my Riak stuff to work - I've already
asked these questions of some Basho people and gotten some answers, but
thought I would toss it out into the wider world to see what you all have
to say, too:

First off - I know 5 instances is the magic number of instances to have.
If I understand the thinking here, it's that at the default redundancy
level ('n'?) of 3, it is most likely to start getting me some scaling
(e.g., performance  just that of a single node), and yet also have
redundancy; whereby I can lose one box and not start to take a performance
hit.

My question is - I think I can only do 4 in a way that makes sense. I only
have 4 AZ's that I can use right now; AWS won't let me boot instances in
1a. My concern is if I try to do 5, I will be doubling up in one AZ - and
in AWS you're almost as likely to lose an entire AZ as you are a single
instance. And so, if I have instances doubled-up in one AZ (let's say
us-east-1e), and then I lose 1e, I've now lost two instances. What are the
chances that all three of my replicas of some chunk of my data are on those
two instances? I know that it's not guaranteed that all replicas are on
separate nodes.

So is it better for me to ignore the recommendation of 5 nodes, and just do
4? Or to ignore the fact that I might be doubling-up in one AZ? Also,
another note. These are designed to be 'durable' nodes, so if one should go
down I would expect to bring it back up *with* its data - or, if I
couldn't, I would do a force-replace or replace and rebuild it from the
other replicas. I'm definitely not doing instance-store. So I don't know if
that mitigates my need for a full 5 nodes. I would also consider losing one
node to be degraded and would probably seek to fix that problem as soon
as possible, so I wouldn't expect to be in that situation for long. I would
probably tolerate a drop in performance during that time, too. (Not a
super-severe one, but 20-30 percent? Sure.)

What do you folks think?

-B.
___
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com