I can imagine two setups:
Load-balance then cache
+-- Cache server #1 (varnish) -- App server #1 / Load Balancer (haproxy)-+---- Cache server #2 (varnish) -- App server #2 \ +-- Cache server #3 (varnish) -- App server #3
Cache then load-balance
+-- App server #1 / Cache Server (varnish) --- Load Balancer (haproxy) --+---- App server #2 \ +-- App server #3
The problem with the first setup is that there are multiple caches, which wastes a lot of memory and makes invalidating cache more complicated.
The problem with the second setup is that there might be a performance hit and two single points of failure (varnish and haproxy) instead of just one (haproxy)?
I'm tempted to go with the second setup because both haproxy and varnish are supposed to be fast and stable: what's your opinion?
Varnish is a powerful HTTP load balancer (reverse proxy), which is also very good at caching. When running multiple TSDs, Varnish comes in handy to distribute the HTTP traffic across the TSDs.
HAProxy Algorithms Round Robin: This algorithm is the most commonly implemented. It works by using each server behind the load balancer in turns, according to their weights. It's also probably the smoothest and most fair algorithm as the servers' processing time stays equally distributed.
When HAProxy Enterprise is used as a reverse proxy in front of your backend servers, a frontend section defines the IP addresses and ports that clients can connect to. You may add as many frontend sections as needed to expose various websites or applications to the internet.
HAProxy Enterprise frontend sections accept incoming connections that can then be forwarded to a pool of servers. The backend section is where those pools of servers that will service requests are defined.
I built a similar setup a few years back for a busy web application (only I did it with Squid instead of Varnish), and it worked out well.
I would recommend using your first setup (HAProxy -> Varnish) with two modifications:
keepalived
and a shared virtual IPbalance uri
load balancing algorithm to optimize cache hitsPros:
Cons:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With