Load Balancing With Riak Ruby Client

Alexey Prohorenko me at alexeypro.com
Sun May 29 13:46:06 EDT 2011


Is there are any solution for round robin through HAproxy to Riak using
protobufs? I believe Yammer guys are using it in their setup.. Might be
wrong, though.

On May 29, 2011, at 10:35 AM, "Scott M. Likens" <scott at likens.us> 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 <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>
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!


 _______________________________________________
riak-users mailing list
riak-users at lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20110529/1b4708ef/attachment.html>


More information about the riak-users mailing list