Yesterday we had a discussion on running vCenter virtual on one of the internal mailinglists. One of the gaps identified was the lack of a best practices document. Although there are multiple for VI3 and there are some KB articles these do need seem to be easy to find or complete. This is one of the reasons I wrote this article. Keep in mind that these are my recommendations and they do not necessarily align with VMware’s recommendations or requirements.
Sizing
Sizing is one of the most difficult parts in my opinion. As of vSphere the minimum requirements of vCenter have changed but it goes against my personal opinion on this subject. My recommendation would be to always start with 1 vCPU for environments with less than 10 hosts for instance. Here’s my suggestion:
- < 10 ESX Hosts
- 1 x vCPU
- 3GB of memory
- Windows 64Bit OS(preferred) or Windows 32Bit OS
- > 10 ESX Hosts but < 50 ESX Hosts
- 2 x vCPU
- 4GB of memory
- Windows 64Bit OS(preferred) or Windows 32Bit OS
- > 50 ESX hosts but < 200 ESX Hosts
- 4 x vCPU
- 4GB of memory
- Windows 64Bit OS(preferred) or Windows 32Bit OS
- > 200 ESX Hosts
- 4 x vCPU
- 8GB of memory
- Windows 64Bit OS(requirement)
My recommendation differ from VMware’s recommendation. The reason for this is that in small environments(<10 Hosts) there’s usually more flexibility for increasing resources in terms of scheduling down time. Although 2 vCPUs are a requirement I’ve seen multiple installations where a single vCPU was more than sufficient. Another argument for starting with a single vCPU would be “Practice What You Preach”. (How many times have you convinced an application owner to downscale after a P2V?!) I do however personally prefer to always use a 64Bit OS to enable upgrades to configs with more than 4GB of memory when needed.
vCenter Server in a HA/DRS Cluster
- Disable DRS(Change Automation Level!) for your vCenter Server and make sure to document where the vCenter Server is located (My suggestion would be the first ESX host on the cluster).
- Make sure HA is enabled for your vCenter Server, and set the startup priority to high. (Default is medium for every VM.)
- Make sure the vCenter Server VM gets enough resources by setting the shares for both Memory and CPU to “high”.
- Make sure other services and servers on which vCenter depends are also starting automatically, with a high priority and in the correct order like:
- Active Directory.
- DNS.
- SQL.
- Write a procedure to boot the vCenter / AD / DNS / SQL manually in case of a complete power outage occurs.
Most of these recommendations are pretty obvious but you would be surprised how many environments I’ve seen where for instance MS SQL had a medium startup priority and vCenter a high priority. Or where after a complete power outage no one knows how to boot the vCenter Server. Documenting standard procedures is key here; especially know that with vSphere vCenter is more important than ever before.
Source:
http://kb.vmware.com/kb/1009080
http://kb.vmware.com/kb/1009039
ESX and vCenter Server Installation Guide
Upgrade Guide
Eric Gray says
Do you ever put the DB on the same VM as VC?
Eric
rbrambley says
Great recommendations!
“Write a procedure to boot the vCenter / AD / DNS / SQL manually in case of a complete power outage occurs.” – Boy, is that an important process to understand. You’re right, many do not get it at first.
Eric,
putting the DB on the same VC VM happens, but I would not advise doing so. If you do, bump the vCPUs and RAM up.
Even in a 100% virtualized infrastructure there is usually a DB VM with (hopefully) a tailored array for the VMFS and other peformance tweaks in place. It’s smarter to put the VC DB there, IMO. It helps with upgrades/migrations/etc later too.
Duncan Epping says
In really small environments I did. I even used SQL Express for really small environments. although I would not recommend it, if you can isolate it!
Arnim says
and don’t forget to put a hard copy of the boot procedure in a well known safe place. š
Carlo Costanzo says
@Duncan/@Rich,
I tend to prefer SQL express (now that it ships with the 2005 version) for smaller environments (less than 10 hosts) for it’s simplicity (Technically and Politically). I like having all of the environment on 1 VM. Not having to involve DBAs in the VMware environment has distinct advantages in most of my environments. š
A single VM also makes upgrading a snap since a single snapshot will protect the DB from Schema updates during the upgrades.
In the larger environments, I STILL PREFER Full blown SQL on the VC box.
I have not experienced performance issues in the smaller environments.
Carlo.
Tomas Fojta says
Duncan
How do you update the host where vCenter with Update Manger is running? Can vCenter vMotion itself?
Andrew Storrs says
Tomas, yup vCenter as a VM can vMotion itself just fine š
beyondvm says
@eric my ideal for non sql express installations (not a huge fan of sql express, but it works) is to do an active/passive SQL cluster and have the active node and VC be on the same host to reduce network traffic (create a DRS affinity rule) but keep the passive node on another node (create another DRS rule. If you are concerned about downtime another option is to put VC in a MSCS cluster and put the passive node with the passive SQL node. This practice can apply to other applications as well, remember VMs on the same host communicate at bus speed!
Great article as usual Duncan!
Jon Owings says
We were just talking about this yesterday. We had a dedicated ESXi host for vCenter, I would rather put it in the cluster.
Tomas Fojta says
What if you have only vSphere Standard with HA cluster but without DRS and vMotion. How do you patch the host with vCenter now?
Tom says
I have read that vMotioning a VM takes it ‘out’ of the automated startup routine etc.
Is there an ‘automatic’ way to reset the ‘automatic’ startup information for all the VMs in a host??
This is too easy to forget and one does occasionally have to vMotion one’s VC VM.
BTW I have VC in a VM in a 3-host cluster, never noticed any issues other than VI Client starts slow on my Vista box. Everything else works great.
Thank you, Tom
Craig says
Great post, but I can’t find the official statement from VMware about virtualizing the vCenter. Will VMware officially publish 1 for vsphere 4?
Sean Clark says
Tomas,
If you only have vSphere Standard I would do the following to update your hosts. First, update all ESX hosts besides the one with vCenter VM. Once they are updated, you can shutdown the vCenter VM. Then log into other ESX hosts that already updated, browse the datastore containing the vCenter VM and ad it to inventory. Then power it on (answer question about moving the VM) then proceed with using Update Manager to update the last remaining ESX server that was previously hosting the vCenter VM. Having a SAN makes this possibly, of course.
I have also done a similar procedure without shared storage, but instead of simple re-registering on another host I would use Vizioncore vReplicator or Veeam Backup to move the vCenter VM between ESX hosts to facilitate use of Update Manager to update ESX hosts. It’s not pretty, but it works. š
Holler if you have other small biz ESX questions. It’s where I spend most my time.
Sean Clark – Twitter: vSeanClark
Ben Hinkle says
Would it be a wise choice to use Fault Tolerance on the vCenter VM?
I’m still unsure of the dependancies of FT on the availability of the vCenter server. If it’s only dependant on HA, that’s functional without the vCenter being operational isn’t it? So it would stand to reason that vCenter would benefit from FT.
Duncan says
Well the official minimum reqs are 2 vCPUs which would rule out vCenter immediately.
byuen says
Can I also use the FT feature in vSphere for my Virtual Center server?
byuen says
This question goes out to everyone who reads this: Why would you then want to spend the big bucks for vCenter Heartbeat if vSphere FT can also provide FT. Sure there are additioanl features with VC Heartbeat but is it worth that much more? Currently I have a failover VC that is offline. When needed, I just enable the services for VC and when I login to VC client I accept the changes and make this the primary VC again. I’m not sure how this works in vSphere but I will test it out.
Duncan says
FT only supports single vCPU VMs so far. Most environments where vCenter is critical will also probably need 2 vCPUs.
Simon Wilmann says
Is there any vmware doco supporting that virtual center supports and benefits from more than 2 vCPU? eg can it thread to more than 2?
Doug Youd says
What about the sizing of the database? I’ve been hunting for good sizing information of the VC DB server as we’re hitting performance and availability issues (due to DB locks) on our VC DB server.
Obviously VC provides a tool internally for determining VC DB size with a given stats level. But I haven’t been able to find out utilization guidelines for other metrics such as RAM and (v)CPU for the DB server(s).
Does anyone have any input or links they could suggest?
Laurent says
I’m currently in the process of installing the vCenter and I have been asked to make it redundant in case of power or harware failure….Can I run VCenter using HA on SQL express 2005? What is the minimum SQL version requirement for HA or database mirroring to function??
Toni says
Hi all,
I am getting the below error on SQL DB installed on new X86 blade server. We are using Clariion through SFS.
Error occurred when fetching data
SQL anywhere Error – 1009039: main Bufman: An error was detected on a database page. You may have a damaged index
. For an additional information, Please check the IQ message or run sp_iqcheckdb. Check your filtering conditions.
Can you please help me?
Phil says
Question that I have, is it better to install vCenter as a VM within VMware or as a stand alone box?
Rick says
It’s 2013 and the last question was answered in 2009. So let me ask a question…