After having all the issues with distributed network switches and Nexus 1000v switches and vCenter / Virtual Center’s database on a SQL instance that’s on a different server, I decided to recommend to the client that we proceed with installing SQL onto the vCenter server’s operating system and use that to host the database. Since we’ve moved to this configuration, we noticed that the VirtualCenter and VirtualCenter Management Webservices services would never start upon a reboot:
I went ahead to review the logs and found the following:
Event ID: 1000
The description for Event ID 1000 from source VMware VirtualCenter Server cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
Failed to intialize VMware VirtualCenter. Shutting down...
the message resource is present but the message is not found in the string/message table
Event ID: 7001
The VMware VirtualCenter Management Webservices service depends on the VMware VirtualCenter Server service which failed to start because of the following error:
The service has returned a service-specific error code.
Event ID: 7024
The VMware VirtualCenter Server service terminated with service-specific error The system cannot find the file specified..
Event ID: 18456
Login failed for user ‘blah/svc_vmvc’. Reason: Failed to open the explicitly specified database.
[CLIENT: <local machine>]
Through reviewing the logs, it’s obvious that the database isn’t ready when the services are trying to start and therefore fails to do so. After having experienced something similar before with another client, I decided to simply set the VirtualCenter service to depend on the MSSQLServer service and since the VirtualCenter Management Webservices service depends on the VirtualCenter service, it will wait till until it has started before starting itself.
(For instructions, see the next blog: http://terenceluk.blogspot.com/2010/07/addressing-virtualcenter-service-not.html)
I went ahead to reboot the server after I modified the registry and added the dependencies only to find that the problem still continued to happen. I’m unsure as to why but I decided to try and change the service from Automatic:
…to Automatic (Delayed Start):
Once I completed this and restarted the server, the services began to start properly. There was one caveat though, and it was the VirtualCenter service starting properly 2 to 3 minutes after the server is reachable. In case the person reading this doesn’t know, the reason for this is because setting a service to Automatic (Delayed Start) means that it will wait till all of the other Automatic services are completed started before it will start and the Service Control manager also sets the priority of the initial thread for these delayed services to THREAD_PRIORITY_LOWEST.