Hello Daniel.
Consistency is the main reason for initially pointing all slaves to
SolrMaster-A.
This gives us the confidence that the very same index version is being
served everywhere...
Thank you very much for the input.
Arcadius.
On 13 June 2014 10:56, Daniel Collins danwcoll...@gmail.com wrote:
Why do you need to swap the replicas from one master to another?
If you have a cross DC database that ensures both Masters are in sync, why
not just tie SolrSlave-B1 and SolrSlave-B2 to SolrMaster-B at all times?
Then you don't have any fail-over to do at all?
We have multiple DCs and a similar setup (though a bit larger, 16 machines
per DC comprising 4 replicas of the collection) and we do exactly that. So
we have 2 independent Solr Clouds, but we feed them from a single input
stream, so they should be in sync (except commit times might vary slightly
from replica to replica). Users query whichever replica is nearest/least
loaded, to minimize cross-DC traffic.
But then for us, availability beats consistency, we'd rather have a working
cloud if one DC dies, even if it is slightly inconsistent. For us, that's
better (its an NRT system) than the alternative. If we do lose a DC, we'll
have to manually sync back up before we bring it on-line for users but
that's a price we are willing to pay.
On 13 June 2014 00:52, Arcadius Ahouansou arcad...@menelic.com wrote:
Hello.
- We currently have solr 4 in master-slave mode across 2 DataCenters.
- We are planning to run the system in active-active mode, meaning that
search requests will go to Solr Slaves in both DC-A and DC-B.
- We have a highly available and cross DC database that feeds the
SolrMaster in both DC. So, both Solr Masters are being kept up-to-date.
- In order to allow all slaves in both DC to have the very same index
version, we have come up with the idea of having multiple masterUrl on
each
slave, i.e masterUrl=masterUrl-A,masterUrl-B (and this is the main point
of
this post)
- When both DC are available, only masterUrl-A is used for fetching the
index and the topology would look like the one shown at
https://www.dropbox.com/s/4vqdx70af5ddn69/master-slave-failover.png
- In case the worst happens and we lose DC-A, the slaves in DC-B will
get
network errors like NoRouteToHost or ConnectionTimeout.
- After few attempts, the slaves will switch to using the next url in the
masterUrl variable which would be masterUrl-B
- This should work pretty well and when DC-A becomes available, we could
issue a rest API call to reset the masterUrl or restart the master in
DC-B
and slaves in DC-B should switch back to using masterUrl-A.
- I would like to gather your thought about this idea.
- If this makes sense, I could raise a Jira ticket to enable multiple
masterUrl and the fail-over principle described here.
Thank you very much.
Arcadius.
--
Arcadius Ahouansou
Menelic Ltd | Information is Power
M: 07908761999
W: www.menelic.com
---