top | item 9821569

Server Farm Setup for Knife Depot

23 points| smusumeche | 10 years ago |musumeche.com

18 comments

order

brianwawok|10 years ago

Thoughts as I run a similar (but completely different) setup on DO.

1) Have you considered DNS round robin for your nginx and varnish servers? Running 2 of each (at half size) would let either one die and nothing bad happen to your site.

2) Are you ok with MongoDB being a SPOF?

3) Are you okay with your main DB being a SPOF?

I ask this not to be snarky, but I see that you are 84% of the way to having a SPOF proof setup, but not quite all the way there. I know I sleep a little better at night knowing that if my nginx box blows up, I have more with DNS round robin to keep everything running till the morning.

smusumeche|10 years ago

Good suggestions! The only issue I see is that if the traffic was split between two different varnish servers, the cache would take twice as long to "warm".

oceanic|10 years ago

Nice diagram, I'm borrowing it as a reference for the setup I'm going to be designing for work soon :-)

Did you consider running nginx for your PHP application servers as well?

Also, can I ask what sort of traffic you get per {{ time period }} ??

smusumeche|10 years ago

Not that much. Apache gets about 30-40 requests per second on average. However, this is with Varnish handling a lot of requests that never get sent to the backend.

nodesocket|10 years ago

I would remove varnish and use nginx anyday. Varnish config makes baby jesus cry.

smusumeche|10 years ago

Nginx doesn't do the advanced cache invalidation based on tags in a header.

heydonovan|10 years ago

Like others have said, I'd ditch Apache/Varnish for Nginx/PHP-FPM with the ngx_cache_purge module. That's what I've done, and it's far easier to maintain. The VCL language has always struck me as overly complicated, but that's just me. Any reason you chose MongoDB over Redis? (I work with MongoDB and Redis on a daily basis, so I was just curious as to why you chose one over the other for session storage).

smusumeche|10 years ago

I chose MongoDB because Symfony has a built-in MongoDB session handler that is included with the framework.

mfr8|10 years ago

That's a great diagram. What do you use to create your diagrams?

jefurii|10 years ago

++ I'd like to know what software was used. Please!

smusumeche|10 years ago

I used LucidChart free account :)

icpmacdo|10 years ago

Would it be possible to take something like that UML, package it up in Docker and have it deploy to your vps in a more complex heroku way? I think that would solve a few common problems.

mrweasel|10 years ago

I can't really figure out if you're being sarcastic or not. There's really no need to add complexity to a setup this simple. Docker would just be another tool to learn and maintain, with very little gain.

mattkrea|10 years ago

Why do you dislike NGINX?

smusumeche|10 years ago

I don't dislike it at all. I just was hoping to have varnish handle everything on that server.