Load Balancing With Riak Ruby Client

Scott M. Likens scott at likens.us
Sun May 29 13:35:34 EDT 2011


Hey,

In my Chef recipes for AppCloud (Engine Yard's PaaS Product) I actually configured haproxy to listen on 8098 on the application instances and redirect to all the riak nodes in a roundrobin fashion. (Had httpchk for /ping to ensure the node is up)

In my own testing with basho_bench this seemed to work, I'm unsure of what drawbacks there would be because I could not find any other then HTTP was slower then PBC.

I did find find that Protobuffers did not roundrobin correctly with haproxy using tcp mode... darn :(

So if we're just speaking HTTP could totally use HAProxy or a Hardware Load balancer to spread out the load.

Scott
-- 
Scott M. Likens
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)

On Friday, May 27, 2011 at 12:40 PM, Sean Cribbs wrote:

> This is one thing I desperately want to refactor. The Ruby client still contains some things that reflect my earlier, less astute understanding of how a Riak client should behave and doesn't include obvious things like retrying requests (possibly on other nodes), conflict resolution strategies, and mutators.
> 
> In the past, I have recommended that users put a lightweight load-balancer (e.g. haproxy, pound) between their application and Riak, and simply have the app connect to the locally-running instance of the LB. I realize this is not a great solution, but it also avoids a little NIH for now.
> 
> Sean Cribbs <sean at basho.com (mailto:sean at basho.com)>
> Developer Advocate
> Basho Technologies, Inc.
> http://basho.com/
> 
> On May 27, 2011, at 3:20 PM, Keith Bennett wrote:
> 
> > Hi, all. If I have several riak servers on a cluster, and want to distribute load fairly evenly, and am using the Ruby Riak client, what is the best way to balance load?
> > 
> > With the HTTP interface, I can randomize the choice of host for a request. How would I do the same with the ruby client? Would I create a Riak::Client for each host, and then just randomize the selection of those for a given call? Do the clients contain any state that would make this a bad idea? Or is there a better way to do this?
> > 
> > Thanks,
> > Keith
> > 
> > 
> > _______________________________________________
> > riak-users mailing list
> > riak-users at lists.basho.com (mailto:riak-users at lists.basho.com)
> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> 
> 
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com (mailto:riak-users at lists.basho.com)
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> 
> !DSPAM:4ddffdaf202681804284693!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20110529/94367d46/attachment.html>


More information about the riak-users mailing list