I'm planning to have an architecture similar to:
nginx - nginx - nginx - nginx
\ \ / /
varnish
/ | \
app server - app server - app server
(The app servers are all "identical" in the sense that a request can be routed to any of them by Varnish.) The varnish in that diagram would be processing (potentially) hundreds of thousands of requests per second. Can it do that?
I'd prefer to run multiple Varnish servers, for failover and performance reasons, but the immediate problem I see is that caching wouldn't have much use, because each request would hit a different Varnish server, until each of the Varnish servers had a copy of the cached object. What's the right way to do this? (Again, the app servers are identical to Varnish, it doesn't matter to which the request is routed. I'd like to have multiple Varnish servers (behind nginx's load balancing) processing the requests.)