I am hoping to get some feedback on the architecture I've been planning for a medium to high volume site. This is my first time working with Solr, so I want to be sure what I'm planning isn't totally weird, unsupported, etc.
We've got a a pair of F5 loadbalancers and 4 hosts. 2 of those hosts will be repeaters (master+slave), and 2 of those hosts will be pure slaves. One of the F5 vips, "Index-vip" will have members HOST1 and HOST2, but HOST2 will be "downed" and not taking traffic from that vip. The second vip, "Search-vip" will have 3 members: HOST2, HOST3, and HOST4. The "Index-vip" is intended to be used to post and commit index changes. The "Search-vip" is intended to be customer facing. Here is some ASCII art. The line with the "X"'s thru it denotes a "downed" member of a vip, one that isn't taking any traffic. The "M:" denotes the value in the solrconfig.xml that the host uses as the master. Index-vip Search-vip / \ / | \ / X / | \ / \ / | \ / X / | \ / \ / | \ / X / | \ / \ / | \ HOST1 HOST2 HOST3 HOST4 REPEATER REPEATER SLAVE SLAVE M:Index-vip M:Index-vip M:Index-vip M:Index-vip I've been working through a couple failure scenarios. Recovering from a failure of HOST2, HOST3, or HOST4 is pretty straightforward. Loosing HOST1 is my major concern. My plan for recovering from a failure of HOST1 is as follows: Enable HOST2 as a member of the Index-vip, while disabling member HOST1. HOST2 effectively becomes the Master. HOST2, 3, and 4 continue fielding customer requests and pulling indexes from "Index-vip." Since HOST2 is now in charge of crunching indexes and fielding customer requests, I assume load will increase on that box. When we recover HOST1, we will simply make sure it has replicated against "Index-vip" and then re-enable HOST1 as a member of the Index-vip and disable HOST2. Hopefully this makes sense. If all goes correctly, I've managed to keep all services up and running without loosing any index data. So, I have a few questions: 1. Has anyone else tried this dual repeater approach? 2. Am I going to have any semaphore/blocking issues if a repeater is pulling index data from itself? 3. Is there a better way to do this? Thanks, Parker