суббота, 9 октября 2010 г.

vCenter не стартует

Памятка.

В моем демостенде в качестве базы для vCenter используется SQL Express.
Бывает такое, что vCenter не запускается, пытаясь стартовать раньше БД – притом выставление зависимости не помогло.
В рамках овладевания PowerShell набросал скриптик для решения проблемы, скачать его:

   1:  #служба SQL Server
   2:  $sql = Get-Service -displayname *SQLEXP_VIM* 
   3:   
   4:  #Служба vCenter Server
   5:  $vpxd = Get-Service -name vpxd
   6:   
   7:  #Служба vCenter ManagementWebServices
   8:  $vpxWeb = Get-Service -name vctomcat
   9:   
  10:  # Шаг 1. ждать 10 секунд => проверить статус службы SQL. Если НЕ запущена, ждать дальше. Если запущена - проверить статус службы vCenter. По хорошему надо еще ограничить число итераций, здесь этого нет.
  11:  do { 
  12:      echo " "
  13:      echo "Step 1. wait 10 seconds SQL Service to start"
  14:      Start-Sleep -Seconds 10
  15:     }
  16:   while ($sql.Status -ine "Running" )
  17:   
  18:   # Если служба vCenter не запущена то запустить ее
  19:  if ( $vpxd.Status -ine "Running" )
  20:  {
  21:   echo " "
  22:   echo "Step 2. vCenter Server status =" $vpxd.Status
  23:   echo " "
  24:   echo "Starting vCenter Server"
  25:   Start-Service -Name vpxd
  26:   echo "Started vCenter Server successfully!"
  27:   echo " "
  28:  }
  29:   
  30:  # Если служба веб сервера не запущена, то запустить ее.
  31:  if ( $vpxWeb.Status -ine "Running" )
  32:       {
  33:       echo "Step 3. vCenter WebServer status =" $vpxWeb.Status
  34:       echo " "
  35:       echo "Starting vCenter WebServer"
  36:       Start-Service -Name vctomcat
  37:       echo "Started vCenter WebServer successfully"
  38:       echo " "
  39:      }


Помещенный в автозагрузку при помощи штатного планировщика Windows 2008 скрипт, вроде как, отрабатывает как надо. Разрешено выполнение неподписанных скриптов командой



Set-ExecutionPolicy Bypass

UPD. Уже подсказывают:
Dmitry Gorokhov - В 2008 windows можно поставить вместо зависимости отложенную загрузку службы. С ней отлично стартует через несколько минут после старта ОС :)

7 комментариев:

  1. Миша, чувствуется системый подход! ;)
    Два сервиса vcenter ставишь в auto(delayed start).

    ОтветитьУдалить
  2. Да именно через задержку старта решается в 2008.
    --Соболев.

    ОтветитьУдалить
  3. да я писал скрипт не чтобы проблему решить, а чтобы в PS потренироваться.
    и получил десяток советов про отложенный старт :)

    ОтветитьУдалить
  4. для 2003 сервера:
    http://networkadminkb.com/kb/Knowledge%20Base/VMWare/VirtualCenter%20Server%20will%20not%20start%20after%20server%20reboot.aspx

    ОтветитьУдалить
  5. В Windows 2008R2(в предыдущих версиях точно так же) сделал так:
    Сервис VirtualCenter, в закладке Dependencies добавил зависимость запуска от старта сервиса SQL Server - пока тот не запуститься VirtualCenter не стартует.

    ОтветитьУдалить
  6. Понимаете ли, какая штука...
    Зависимости и проверка запуска MS SQL в лоб не подходят, равно как и задержка априори.
    Для vCenter все равно - стартовал ли MS SQL как сервис, ему важно - доступна ли БД vCenter. А БД может еще долго читать свои логи, делать roll in и т.п.
    То есть нужно по ODBC стучаться и говорить select top 1 * from .sys.tables, когда вам что-то приедет в ответ - база доступна и vCenter - ваш выход. Ну или другой метод для проверки именно доступности БД.

    ОтветитьУдалить
  7. 1. On the vCenter Server system, select Start > Programs >VMware > VMware Tomcat > Configure Tomcat.
    2. Click the Java tab.
    3. Change the maximum memory pool parameter in the configuration utility from 1024 MB to 512 MB.
    4. Click OK.
    5. Restart the service. For more information, see Stopping, starting, or restarting vCenter services (1003895)

    ОтветитьУдалить