We're a small development company and we're currently looking for a server for our internal needs. The basic idea I came up with is that this machine will itself run nothing but VMWare or Virtual Server (we'll be using Windows) and host virtual machines for various capacities.
We need to run:
- Domain Controller
- Microsoft SQL Server (for testing purposes, nothing really heavy)
- Web server (again, for testing purposes)
- TeamCity, JIRA, Confluence whatever
I'm absolutely unaware of current hardware trends (but I do know how to assemble a PC, I just can't really tell the difference between all theses Conroe, Merom, Wolfdales, etc.), so I'm asking for a configuration for a machine capable of performing the said tasks. My personal wishes include lots of RAM, multicore CPU (this is common nowadays, isn't it?) and probably RAID. Other than that I'm open for any ideas.
You'll definitely want RAID if your DC is running on it. You'll also want something from the VMWare Hardware Compatibility List, as it only supports certain systems.
http://www.vmware.com/resources/compatibility/search.php?ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
For a CPU, I'd say get at least a Quad Core Xeon, the newer the better. And RAM is cheap (relatively speaking) and even 24GB isn't too big of a budget cruncher. If you can afford it, I'd get a chassis with 6 drive bays and a SAS controller and set up a RAID 10 across 450GB 15k drives, giving you about 1.2TB of space, and some serious performance.
Those ten people may be really mighty ticked if one hardware failure dies and everything...everything...is gone for awhile.
If I wanted to virtualize everything on the cheap, I'd look at investing in two computers like those from whitebox's site...hardware compatibility for building an ESXi system from scratch. You can build a suitable ESXi (free bare metal hypervisor for VMWare) for ~$500, if you play your cards right.
Or you can look for compatible used Dell servers like 2950's from their refurb store.
I'd set up at least two systems so I could copy backups and run two separate physical VM's for domain controllers. AD likes having more than one to sync to, and the ESXi VM will improve performance a little.
Small company is one thing and I understand the budgeting issues, but complete failure of all servers can also impact a small company far more than a larger company with plans and staff in place to deal with it. Having those two machines to create some form of redundancy when something fails will make you a hero...
For 10 users I would ...
Buy a Windows 2003R2/8 server (quad core, 4gb ram+)
Run Hyper-V with:
Invest in a quality server (avoid whitebox or custom) with a nice raid card and a hot spare drive and your off to the races.
I would have a plan in place to move these roles around if you grow, in which case I wuold recommend the DC and SQL servers be split, and the machine run everything inside virtual containers, but for 10 users, having 5 virtual windows servers is OVERKILL.
Likely you have NUMEROUS single points of failure --
Millions of small businesses run off a single server with good backups. Its a risk to do so, but for the 50-60 servers I actively maintained for 3 years as a consultant, the only issue we ever had was memory related, or a dead raidcard. Measure the cost of downtime. Does a 1% risk of a server going down for two days in 3 years justify a more redundant system.
I would always want a physical DC somewhere in my network. I can imagine a scenario where the VM's won't start properly because there isn't a running DC, and you have to play with the start-up processes to ensure that the DC VM is always running before the others, make sure the host has a local account you can get into. Having a small DC that is physical, even if it is not a real server machine, can get you by this.
Be careful, there are some restrictions over what you can do on a Domain Controller, especially on microsoft products. Example : TFS won't install on a DC.
Sorry but the voices in my head are screaming single point of failure at me. Not a helpful response. I suppose the hardware spec would depend on what you mean by a small company, how many users are you looking at?
As the loads are quite light, it's the ease of use and versatility you'd really like to have. I'd do this by getting some entry-level configuration of something listed in VMWare ESXi hardware compatibility list. One quadcore CPU, 6 or 12 gigabytes of RAM and a RAID controller with a battery backup should do the job quite nicely. Choosing the right chassis will also give you a relatively easy upgrade path. For example, HP DL380 G6 could be equipped with two CPUs, up to 144GB of RAM and 8 HDD's, but starter bundles are still relatively cheap.
Anyway, it's better not to buy it over-spec'd at first. It's easier (and more cost-efficient) to beef up only the areas that are actually bottlenecks. The downside is that you have to understand your loads and every once in a while take a look how your servers are handling the loads.
I am a fan of the larger HP prolient systems, they are a bit pricey, but are cheaper than dell servers (and a bit more reliable imho). The only issue you run into with them is upgrade hardware, but third party vendors are reliable for that.
I'd suggest in investing in one with hardware raid (the ml350 has one, but not the ML120), and get two of them to setup as failover/load balance. or keep one on cold spare pre configured to take over if the first nose dives. Using windows virtual system or VMware server on a windows install would probably be better than a ESX for you application.
I know you can get the ML350's from provantage for decently cheap, and they come with the ability to have dual quad, and a bunch of ram (i don't remember the max off hand)
If you are truly a small business, then you may want to take a look at Windows Small Business Server 2008 Premium, which includes two Win 2008 OSes (which you'll run as VMs), Exchange 2007, SharePoint 3.0, Forefront Security, and SQL Server 2008.
Comparison table for SBS Standard and Pro
I'd further recommend installing Microsoft Hyper-V as the host OS (which is free) and using your dual-OS Win SBS Pro licenses as two guest VMs.
For hardware:
I've found that when I began virtualizing machines, RAM and hard drive I/O were my main performance limitations. If you are running two VMs, one with SQL server, you should invest in the faster drives. As for RAM, it won't be long before you'll want to add another VM and then another to your host, so leave some empty DIMMs to expand.
I have to agree with others, that you are creating a single point of failure. The better approach would be to have two servers running Hyper-V and an iSCSI SAN for shared storage. The SAN would hold your VMs. If either Hyper-V host crashed, your VMs would move to the unaffected host.
This might sound like overkill. But if these 10 users can't afford any downtime, then redundancy will pay for itself.