Тема: VMware и UPS
Показать сообщение отдельно
Старый 24.05.2011, 13:05   #11
Kombarow
Новичок
 
Пол:Мужской
Регистрация: 24.05.2011
Сообщений: 1
Репутация: 0
По умолчанию Re: VMware и UPS

Цитата:
Сообщение от Neohunter Посмотреть сообщение
Кстати в сфере вроде уже поддерживается проброс usb - интересно как в связи с этим поддержка usb/com UPS ?

Можно и по USB, а если у UPS есть UPS Network Management Card - его можно прикрутить к vMA и тушить все из-под нее. А для микро-инфраструктуры и барахольного какого-нибудь Ippon'а можно и проще сделать: запитываем хосты и одну какую-нибудь физ. машинку (админскую к примеру) в UPS, цепляем физ. машинку по USB к UPS, ставим мониторящую приблуду от производителя и настраиваем реакцию на исчезновение электропитания: если его нет в течение, допустим, 20-30 минут - пускаем скрипт на PowerCLI, который гасит виртуалки на хостах, а затем и сами хосты, после чего гасим физ. машинку и ждем появления тока в розетке.
Сам скрипт примерно может быть такой:
================================================== =======
$MyName = "Имя админа хоста (хостов)"
$MyPass = "Пароль админа хоста (хостов)"
$MyHosts = ("IP хоста №1", "IP хоста №2") | foreach {connect-viserver -server $_ -user $MyName -password $MyPass}
Get-VM | Where-Object {$_.PowerState -eq "PoweredOn" -and $_.Guest.State -eq "Running"} | Foreach-Object { Start-Sleep -Seconds 10
Suspend-VM -VM $_ -RunAsync -Confirm:$false}
$waittime = 480
$Time = 0
do { Start-Sleep -Seconds 1
$Time = $Time + 1
$timeleft = $waittime - $Time
$numvms = (Get-VM | Where-Object { $_.PowerState -eq "PoweredOn" }).Count
Write "Ожидаем завершения работы $numvms гостевых ОС или истечения $timeleft сек."
} until ((@(Get-VM | Where-Object { $_.PowerState -eq "poweredOn" }).Count) -eq 0 -or $Time -ge $waittime)
Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"} | Stop-VM -RunAsync -Confirm:$false
Start-Sleep -Seconds 180
Get-VMHost | ForEach-Object {Get-View $_.ID} | Foreach {$_.ShutdownHost_Task($True)}
================================================== =======

Примерно так. Если необходимо гасить ВМ в некотором определенном порядке, то создаем в vCenter папки и рассовываем по ним ВМ. Соответственно коннектиться в скрипте надо уже не к хостам напрямую, а к vCenter и гасить ВМ по порядку, в котором они рассованы по папкам:

Get-Folder -Name "Логическая папка № 1" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOn" -and $_.Guest.State -eq "Running"} | Foreach-Object { Start-Sleep -Seconds 10
Suspend-VM -VM $_ -RunAsync -Confirm:$false}

и так далее.

Последний раз редактировалось Kombarow; 24.05.2011 в 13:10..
Kombarow вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.08710 секунды с 9 запросами