What is a best practice server setup for a small business?

I know this is a general question that may not have a single right answer but I want some opinions.  What are the key components to setting up a basic, small business server infrastructure on a Microsoft based network to ensure redundnacy, load balancing etc.?  For example, I have read it's a good idea to have AD, DNS and DHCP with two instances so if one server fails, the second location can pick up that service seamlessly.  Are there any other "roles" or "services" to consider when it comes to ensuring this kind of efficient design?  Should I do the same for print servers?  Should the roles be hosted on the same virtual machine or split up?  All that is really needed is simple user accounts, file sharing, print sharing etc.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Lee W, MVPTechnology and Business Process AdvisorCommented:
This is all dependent upon budget.  The more redundancy, the more expensive in general.  Is your small business a florist that needs a server to run point of sale or is it a small stock broker that can lose millions if the server is off at the wrong time.  Odds are it's somewhere in between but what solutions you use or should even explore depend on the business.

A better way for your to approach this, in my opinion is to ask yourself, what does the server do?  Then ask what can be offline for a minute, an hour, a day, or a week?  Those that cannot be off for more than a minute need the highest level of redundancy.  If you decide DNS is like that you don't need a cluster for DNS, simply having a second DC is enough.  But if you decide your SQL database cannot be offline for more than a minute, then you probably should be setting up an expensive cluster to cluster SQL and ensure it's online.  Think SINGLE POINT OF FAILURE.  stop and carefully map out each point of the network, each service, and determine what would happen to the entire network (or service) if that point failed - then determine that points tolerance to be down, and determine what needs to be done to keep it running at that level of tolerance.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Windows Server 2012

From novice to tech pro — start learning today.