VMware vCenter & SQL : Best Practice

This month I started on a new project and I noticed again a different approach from a colleague to the vCenter/SQL/Physical/Virtual issue. And of course there has been written a lot about this issue but I couldn’t find my exact view anywhere else so I thought I’d open up a discussion here by presenting the Best Practice in my humble opinion.

There are 4 critical decisions you have to make concerning the vCenter server for your VI:

**_1. vCenter server : physical or virtual.

  1. SQL Database (server) : locally or detached.
  2. Redundancy options : make it redundant and if so; how?
  3. License server : locally or detached.

1. Virtualize your vCenter server. Reasons :

1.1. You’re automatically making it Highly Available. When the physical machine is down, HA still works so your vCenter Server is protected against hardware failures.

1.2. Eat your own dog food; you trust your company/customers to run production on your Virtual Infrastructure, why the h*** wouldn’t you?



2. Install the SQL databaseserver and the database on a different server (cluster) as your vCenter Server. Reason :</p>


2.1 Performance. When hosting a larger environment the database server will get pretty busy and you don’t want your VC and it’s database server getting strangled in a performance struggle.

Take notice that this is concerning larger environments. If you have a smaller environment and use the SQL Server 2005 Express Edition, off course you keep the VC and database on the same server.



3. Redundancy options: Use HA and have a backup VM or physical machine available.</p>


3.1 Options to really cluster the vCenter server is overkill when you ask me. I still consider it “just a management server”; the most important function : HA, works without VC intervention.

3.2 If your VC or database really gets corrupted you still have a serious issue since you won’t be able to find your VM’s, besides that DRS doesn’t function either. Therefore you should have a way to get your VC back quickly.







4.1 No performance impact and running it locally reduces the danger of network failure to interfere.



Take notice: virtualizing your vCenter Server is fully supported by VMware but there are some additional considerations:</p>


A. Make sure its resources are guaranteed. Make use of reservations/shares !

B. Make sure the autostart policy for the VC VM is set with the highest priority (This in case your ESX cluster went down for whatever reason) !

C. Think of the other resources needed for your VC to function : DNS, AD, DB. Make sure these are always up for your VC. So if they run virtual, set the autostart policies and prioritize it like this : 1. DNS, 2. AD, 3. DB.

D. Disable DRS for VC [edit thx to Vikash/Duncan]

Please take notice. These are best practices based on my own experience, experience of others and VMware whitepapers. Most relevant white papers with more details :
Running VC in a VM : https://www.vmware.com/pdf/vi3_vc_in_vm.pdf 
VC SQL Database Performance : https://www.vmware.com/files/pdf/vc_database_performance.pdf.

Off course I’m not the first one writing about this so check out the following sources, which I’ve have also used, for more info about running VC virtual:

Making VC Highly Available @ Yellow-Bricks : https://www.yellow-bricks.com/2008/11/19/make-virtualcenter-highly-available-with-vmware-vi3/

VC Physical or Virtual @ VMGuy : https://vmguy.com/wordpress/?p=67 (btw, that wordpress template is soooo 2008 :P)

VC Database Best Practices @ Scott Low : https://blog.scottlowe.org/2008/09/18/po2061-vmware-virtualcenter-25-database-best-practices/

VC Virtual ? @ Rich Brambly (VMETC) : https://vmetc.com/2007/12/28/should-virtual-center-run-as-a-virtual-machine/

Physical/Virtual discussion @ VIOps : https://viops.vmware.com/home/message/1359

 Mgmt Cluster : https://www.dailyhypervisor.com/2009/04/14/vmware-virtual-center-physical-or-virtual/  [Edit 15/4/2009]

Again, I’m trying to open up a discussion here so feel free to comment !