Monday, February 1, 2010

VMware Virtual Center Server failing to start at boot

I recently moved vCenter Server 4 from running on bare metal to a virtual machine. The vCenter Server is not starting successfully at bootup and the Windows Event Log has a message that doesn't provide much insight:
Event Type:    Error
Event Source: VMware VirtualCenter Server
Event Category: None
Event ID: 1000
Date: 2/1/2010
Time: 9:38:03 AM
User: N/A
Computer: VCENTER
Description:
The description for Event ID ( 1000 ) in Source ( VMware VirtualCenter Server ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: Error getting configuration info from the database.
I found one site that resolved this issue by manually copying SSL certs to "C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\SSL", however in my case, the directory and keys exist:
http://www.networknet.nl/apps/wp/archives/846

I believe that the issue is related to the timing of the services starting, in particular, the vCenter components are trying to start too soon before SQL Express is ready.

This VMware Forum posting may provide the workaround (creating a batch file to start the services):
http://communities.vmware.com/thread/208888

  1. Create a new batch file called C:\Scripts\vc-start.bat (goofy that Windows doesn't provide a 'sleep' command)
    sc config MSSQL$SQLEXP_VIM start= demand
    net start MSSQL$SQLEXP_VIM
    ping 127.0.0.1 -n 10 -w 1000 > nul
    sc config vpxd start= demand
    net start vpxd
    ping 127.0.0.1 -n 10 -w 1000 > nul
    sc config vctomcat start= demand
    net start vctomcat
  2. Set the following services to start manually in the "services.msc" MMC program
    • SQL Server (SQLEXP_VIM)
    • VMware VirtualCenter Server
    • VMware VirtualCenter Management Webservices
  3. Test the new batch file from the command line
  4. Set the batch file to start on boot (procedure for Windows XP Pro and Win2k3)
    • Open local computer policy: Start -> Run -> gpedit.msc
    • Expand Computer Configuration\Windows Settings\Scripts
    • In the right-hand pane, double-click Startup
    • Click Add...
    • Browse to C:\Scripts and double click vc-start.bat
    • Leave script parameters empty
    • Click OK and reboot
The vCenter server and tomcat components should now start at boot.

4 comments:

Unknown said...

If an update is applied to vCenter, the services will most likely get set back to Automatic. So after updating, make sure to check services.msc.

This is mentioned on the VMware Communities site, but I figured I'd restate it here.

Unknown said...

The batch file doesn't run. Wish u would try before post.


PS C:\>
PS C:\> .\vcenter_startup.ps1
Set-Content : A positional parameter cannot be found that accepts argument 'start='.
At C:\vcenter_startup.ps1:1 char:3
+ sc <<<< config MSSQL$SQLEXP_VIM start= demand
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

The service name is invalid.

More help is available by typing NET HELPMSG 2185.

Redirection to 'nul' failed: FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use
of "\\.\" in the path.
At C:\vcenter_startup.ps1:3 char:31
+ ping 127.0.0.1 -n 10 -w 1000 > <<<< nul
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : RedirectionFailed

Set-Content : A positional parameter cannot be found that accepts argument 'start='.
At C:\vcenter_startup.ps1:4 char:3
+ sc <<<< config vpxd start= demand
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

The requested service has already been started.

More help is available by typing NET HELPMSG 2182.

Redirection to 'nul' failed: FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use
of "\\.\" in the path.
At C:\vcenter_startup.ps1:6 char:31
+ ping 127.0.0.1 -n 10 -w 1000 > <<<< nul
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : RedirectionFailed

Set-Content : A positional parameter cannot be found that accepts argument 'start='.
At C:\vcenter_startup.ps1:7 char:3
+ sc <<<< config vctomcat start= demand
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

The requested service has already been started.

More help is available by typing NET HELPMSG 2182.

PS C:\>

Unknown said...
This comment has been removed by a blog administrator.
Unknown said...

It looks like you are running the script from within PowerShell.

I'm not familiar with PowerShell, but a quick test of running "sc /?" in PowerShell produced the same error.

Try running it from within a normal cmd prompt.