I'm afraid I'm note completely clear about your scenario. Let me say how
I understand what you're saying, and what I've done in the past.

Firstly, I take it you are using Solr 3.x (from your reference to a
'shards' parameter.

Secondly, you refer to a 'stripe' as one set of nodes, one for each
shard, that are enough to allow querying your whole collection.

Having created the concept of a 'slice', you then hardwire the 'shards'
parameter in solrconfig.xml in each machine in that slice to point to
all the other nodes in that same slice.

Then you point your load balancer at some boxes, which will do
distributed queries. Now, by the sounds of it, every box on your setup
could do this, they all have a shards parameter set up. Minimally,
you'll want at least one box from each slice, otherwise you'll have
slices that aren't receiving queries. But could you include all of your
boxes, and have all of them handling the query distribution work? I
guess you could, but I'd suggest another architecture.

In the setup you describe, if you loose one node, you loose an entire
slice. However, if a distributed query comes into another node in the
slice, the load balancer may well not notice (unless you make the
healthcheck itself do a distributed search) and things could get messy.

What I've done is set up a VIP in my load balancer for each and every
node that can service a shard. Repeat that for each shard that I have.
Let's say I have four shards, I'll end up with four VIPs. I then put
those four VIPs into my shards parameter in solrconfig.xml on all of my
hosts, regardless of what shard/slice.

Then, I create another VIP that includes all of my nodes in it. That is
the one that I hand to my application. 

This way, you can loose any node in any shard and the thing should keep
on going. 

Obviously I'm talking about slaves here. There will be a master for each
shard which each of these nodes pull their indexes from.

Hope this is helpful.

Upayavira

On Tue, Jan 29, 2013, at 09:35 PM, Lee, Peter wrote:
> I would appreciate people's experience on the following load balancing
> question...
> 
> We currently have solr configured in shards across multiple machines to
> handle our load. That is, a request being sent to any one of these
> servers will cause that server to query the rest of the servers in that
> "stripe" (we use the term "stripe" to refer to a set of servers that
> point to each other with the shard parameter).
> 
> We currently have all servers in a stripe registered with our load
> balancer. Thus, requests are being spread out across all servers in the
> stripe...but of course requests to any shard generates additional traffic
> on all shards in that stripe.
> 
> My question (finally) is this: Has anyone determined if it is better to
> place only a few (that is, not all) of the shards in a stripe on the load
> balancer as versus ALL of the shards in a stripe on the load balancer? It
> seemed to me at first that it would not make much of a difference, but
> then I realized that this would really depend on the relative costs of a
> few different steps (one step would be the cost of collecting all of the
> responses from the other servers in the shard to formulate the final
> answer. Another step would be the cost of generating more traffic between
> the shards, etc.).
> 
> So what I am trying to ask is this: If we had 6  servers in a "stripe" (6
> servers set up as shards to support a single query), would there be any
> advantage with respect to handling load to only place ONE or TWO of the
> shards on the load balancer as versus putting ALL shards on the load
> balancer?
> 
> We can test this empirically but if the community already has gotten a
> feel for the best practice in this situation I would be happy to learn
> from your experience. I could not find anything online that spoke to this
> particular situation.
> 
> Thanks.
> 
> Peter S. Lee
> Senior Software Engineer
> ProQuest
> 789 E. Eisenhower Parkway
> Ann Arbor, MI, 48106-1346
> USA
> 734-761-4700 x72025
> peter....@proquest.com
> www.proquest.com
> 
> ProQuest...Start here
> InformationWeek 500 Top
> Innovator<http://www.proquest.com/en-US/aboutus/pressroom/09/20090922.shtml>
> 

Reply via email to