I was just about to jump in this conversation to mention Solandra and go fig, Solandra's committer comes in. :-) It was nice to meet you at Strata, Jake.
I haven't dug into the code yet but Solandra strikes me as a killer way to scale Solr. I'm looking forward to playing with it; particularly looking at disk requirements and performance measurements. ~ David Smiley On Mar 9, 2011, at 3:14 PM, Jake Luciani wrote: > Hi Otis, > > Have you considered using Solandra with Quorum writes > to achieve master/master with CA semantics? > > -Jake > > > On Wed, Mar 9, 2011 at 2:48 PM, Otis Gospodnetic <otis_gospodne...@yahoo.com >> wrote: > >> Hi, >> >> ---- Original Message ---- >> >>> From: Robert Petersen <rober...@buy.com> >>> >>> Can't you skip the SAN and keep the indexes locally? Then you would >>> have two redundant copies of the index and no lock issues. >> >> I could, but then I'd have the issue of keeping them in sync, which seems >> more >> fragile. I think SAN makes things simpler overall. >> >>> Also, Can't master02 just be a slave to master01 (in the master farm and >>> separate from the slave farm) until such time as master01 fails? Then >> >> No, because it wouldn't be in sync. It would always be N minutes behind, >> and >> when the primary master fails, the secondary would not have all the docs - >> data >> loss. >> >>> master02 would start receiving the new documents with an indexes >>> complete up to the last replication at least and the other slaves would >>> be directed by LB to poll master02 also... >> >> Yeah, "complete up to the last replication" is the problem. It's a data >> gap >> that now needs to be filled somehow. >> >> Otis >> ---- >> Sematext :: http://sematext.com/ :: Solr - Lucene - Nutch >> Lucene ecosystem search :: http://search-lucene.com/ >> >> >>> -----Original Message----- >>> From: Otis Gospodnetic [mailto:otis_gospodne...@yahoo.com] >>> Sent: Wednesday, March 09, 2011 9:47 AM >>> To: solr-user@lucene.apache.org >>> Subject: Re: True master-master fail-over without data gaps (choosing CA >>> in CAP) >>> >>> Hi, >>> >>> >>> ----- Original Message ---- >>>> From: Walter Underwood <wun...@wunderwood.org> >>> >>>> On Mar 9, 2011, at 9:02 AM, Otis Gospodnetic wrote: >>>> >>>>> You mean it's not possible to have 2 masters that are in nearly >>> real-time >>>> sync? >>>>> How about with DRBD? I know people use DRBD to keep 2 Hadoop NNs >>> (their >>>> edit >>>> >>>>> logs) in sync to avoid the current NN SPOF, for example, so I'm >>> thinking >>>> this >>>> >>>>> could be doable with Solr masters, too, no? >>>> >>>> If you add fault-tolerant, you run into the CAP Theorem. Consistency, >>> >>>> availability, partition: choose two. You cannot have it all. >>> >>> Right, so I'll take Consistency and Availability, and I'll put my 2 >>> masters in >>> the same rack (which has redundant switches, power supply, etc.) and >>> thus >>> minimize/avoid partitioning. >>> Assuming the above actually works, I think my Q remains: >>> >>> How do you set up 2 Solr masters so they are in near real-time sync? >>> DRBD? >>> >>> But here is maybe a simpler scenario that more people may be >>> considering: >>> >>> Imagine 2 masters on 2 different servers in 1 rack, pointing to the same >>> index >>> on the shared storage (SAN) that also happens to live in the same rack. >>> 2 Solr masters are behind 1 LB VIP that indexer talks to. >>> The VIP is configured so that all requests always get routed to the >>> primary >>> master (because only 1 master can be modifying an index at a time), >>> except when >>> this primary is down, in which case the requests are sent to the >>> secondary >>> master. >>> >>> So in this case my Q is around automation of this, around Lucene index >>> locks, >>> around the need for manual intervention, and such. >>> Concretely, if you have these 2 master instances, the primary master has >>> the >>> Lucene index lock in the index dir. When the secondary master needs to >>> take >>> over (i.e., when it starts receiving documents via LB), it needs to be >>> able to >>> write to that same index. But what if that lock is still around? One >>> could use >>> the Native lock to make the lock disappear if the primary master's JVM >>> exited >>> unexpectedly, and in that case everything *should* work and be >>> completely >>> transparent, right? That is, the secondary will start getting new docs, >>> it will >>> use its IndexWriter to write to that same shared index, which won't be >>> locked >>> for writes because the lock is gone, and everyone will be happy. Did I >>> miss >>> something important here? >>> >>> Assuming the above is correct, what if the lock is *not* gone because >>> the >>> primary master's JVM is actually not dead, although maybe unresponsive, >>> so LB >>> thinks the primary master is dead. Then the LB will route indexing >>> requests to >>> the secondary master, which will attempt to write to the index, but be >>> denied >>> because of the lock. So a human needs to jump in, remove the lock, and >>> manually >>> reindex failed docs if the upstream component doesn't buffer docs that >>> failed to >>> get indexed and doesn't retry indexing them automatically. Is this >>> correct or >>> is there a way to avoid humans here? >>> >>> Thanks, >>> Otis >>> ---- >>> Sematext :: http://sematext.com/ :: Solr - Lucene - Nutch >>> Lucene ecosystem search :: http://search-lucene.com/ >>> >> > > > > -- > http://twitter.com/tjake