Pages

Tuesday, February 17, 2009

vCenter Server Database thinking

I am often asked about some strategies for the vCenter Server database. What to use and where to put it. Here are some of the things I discuss.

Sizing

The database needs to be sized. You can use the Excel spreadsheet at http://www.vmware.com/support/vi3/doc/vc_db_calculator.xls or if you already have VC running and are changing the statistics settings the dialog will estimate the new size for you.

Knowing your size is going to assist in picking a platform. Are you going to use SQL Express or do you need to go with full blown SQL or Oracle. SQL Express is support and VMware are happy for you to use it for small implementations, to quote “Microsoft SQL Server 2005 Express is intended to be used for small deployments of up to 5 hosts and 50 virtual machines.” The limitations of express are up to 1 CPU, 1 GB Addressable RAM and 4 GB Maximum Database Size. If that’s suitable for the growth of the implementation then fine, otherwise put in a full licensed version. Using Express is one area I see people being too polarised and selecting with their heart and not their head.

Where

The next question is where to run the database? You choices are locally on the same machine as vCenter Server or on a separate machine. Your choice is going to depend on scale and licenses. Typically most implementations I see run the database on the same server as vCenter Server (and the license server) as for most implementations the load can easily be handled by a single physical or virtual machine. At some point a separate server may be required, but this is going to only be on the larger implementations. Sometimes a customer will have a main database server which they want to run the vCenter Server database off, which is fine, usually these are a cluster and built for performance, scale and uptime.

The only one thing you DO NOT want to do is run your vCenter Server database from a separate virtual machine (whether the vCenter Server is physical or virtual). Yes one CAN make it work but I have yet to see an example of where the benefits outweigh the startup difficulties this creates. Maybe you can convince me. Doing this just sets you up for a world of pain. If your environment is small you can use Express, if its not that small you can affort to do it right.

Dependencies

The database needs to be up and running before the vCenter Services start. If they are on the same machine you want to set the service dependencies just in case, see http://kb.vmware.com/kb/1007669 for details on how to do this.

Maintenance

Remember this database is going to need some maintenance, many people forget this. As a minimum its going to have to be backed up so include a backup agent or configure a script to dump a database backup to some other location that is being backed up.

A great reference on the vCenter Server database maintenance is http://www.vmware.com/files/pdf/vc_microsoft_sql_server.pdf which covers the following handy topics.
  • Installation
  • Backup and Recovery
  • Reducing Database Privileges after Installation for Higher Security
  • Performance
  • Purging Old Data
  • Enabling Automatic Statistics
  • Upgrading to a New Version of SQL Server
  • Appendix A: Purging Old Database Records
  • Appendix B: Automating Connections to ESX Server Hosts
Further reading

Here is a reading list that VMware Architects should have at least scanned.
  • http://www.vmware.com/pdf/vi3_vc_in_vm.pdf 
  • http://www.vmware.com/files/pdf/vc_database_performance.pdf
  • http://www.vmware.com/pdf/vi3_35/esx_3/r35u2/vi3_35_25_u2_installation_guide.pdf
Post any feedback into the comments.

Rodos

4 comments:

  1. Anonymous12:11 am

    Well it's a bit difficult to make a decision here.
    Since vCenter is not supported on a 64bit server, you're kinda stuck with your 4GB's of RAM.

    VMware recommends not to use MS SQL Express if you have over 5 hosts, but than you're quickly shrinking your resources by having a SQL Server, License Server & vCenter server installed on the same machine.

    What's the suggestion at that point?

    ReplyDelete
  2. Erik, thanks for posting. Once you get to a certain scale you are going to need run a separate DB server for vCenter Server to use.

    ReplyDelete
  3. Anonymous3:17 pm

    "Since vCenter is not supported on a 64bit server, you're kinda stuck with your 4GB's of RAM"

    Can you not use Windows Server 2003 32-bit Enterprise Edition to take advantage of 4GB+ of RAM?

    ReplyDelete
  4. Anonymous11:47 pm

    32bit SQL won't scale beyond a process limit of 2GB.

    ReplyDelete