Load Balancing With Riak Ruby Client

Sean Cribbs sean at basho.com
Sun May 29 13:49:54 EDT 2011


I think for the protocol buffers, one should probably use the "least connected" strategy, but PBC connections tend to be more long-lived than HTTP connections -- which would describe what you saw.

Sean Cribbs <sean at basho.com>
Developer Advocate
Basho Technologies, Inc.
http://basho.com/

On May 29, 2011, at 1:35 PM, Scott M. Likens wrote:

> 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
> 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>
>> 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
>>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>> 
>> 
>> _______________________________________________
>> riak-users mailing list
>> 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/27d49f03/attachment.html>


More information about the riak-users mailing list