Mostrando entradas con la etiqueta VMWARE. Mostrar todas las entradas
Mostrando entradas con la etiqueta VMWARE. Mostrar todas las entradas

martes, 12 de mayo de 2015

Configurar apagado ordenado de VMs sobre VMware con SAIs EATON

Situación:

Tienes:

  • Una infraestructura de maquinas virtuales sobre host ESXi gestionados por vCenter (VMware).
  • Alimentada por un SAI Eaton
Quieres que en caso de corte de suministro eléctrico las maquinas se apaguen ordenadamente antes de que el SAI agote las baterías.

Solución

Lee el articulo: http://www.pantallazos.es/2014/11/apagar-una-granja-vmware-sphere-con-ipm.html

jueves, 13 de diciembre de 2012

Reducir el tamaño de la base de datos del VMware Vcenter Server

Sintomas:

Vcenter va lento e incluso en un  momento el servicio se para con el siguiente error en el visor de eventos
No se encuentra la descripción del id. de evento 1000 en el origen .........
Se incluyó la siguiente información con el evento:

An unrecoverable problem has occurred, stopping the VMware VirtualCenter service. Error: Error[VdbODBCError] (-1) "ODBC error: (42000) - [Microsoft][SQL Native Client][SQL Server]Could not allocate space for object 'dbo.VPX_TEXT_ARRAY' in database 'VIM_VCDB' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup." is returned when executing SQL statement "INSERT INTO VPX_TEXT_ARRAY WITH (ROWLOCK) (ARRAY_ID, TYPE_ID, VALUE, MO_TYPE, MO_ID) VALUES (?, ?, ?, ?, ?)"

El recurso de mensaje está presente, pero el mensaje no se encuentra en la tabla de cadenas o mensajes
O algo similar. La calve es que la base de datos se ha llenado.

Solución

Deten el servicio de vCenter Server
En la base de datos de Vcenter ( VIM_VCDB )
Haz una copia de seguridad completa.

Abre la tabla dbo.VPX_PARAMETER para editar las primeras 200 filas.
Edita las filas:
event.maxAge  nuevo valor: 30
event.maxAgeEnabled value valor true
task.maxAge nuevo valor: 30

task.maxAgeEnabled value valor true

Luego ejecuta el procediminento almacenado dbo.cleanup_events_tasks_proc Le llevará bastante tiempo pero cuando acabe el vCenter irá como una seda.   Fuente: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1025914

viernes, 9 de noviembre de 2012

Problemas con almacenamiento ISCSI en vmWare

Síntomas:

Tienes varios ESX y añades uno nuevo. Los ESX existentes tiene almacenes (datastores) iSCSI
Configuras la red y el iniciador iSCSI.
Después de volver a barrer la red (rescaneo) ves los dispositivos y  que están montados.
Sin embargo los almacenes (datastores) que estan en otros host ESX no son visible en el almacenamiento (storage) de tu nuevo host.

Cuando intentas añadirlos manualmente te ocurren dos cosas:
a) En algún caso lo único que te propone es formatear, cosa que desde luego no haces.
b) En otros casos te da las tres opciones, pero cuando eliges utilizar la signatura existente (keep existing signature) obtienes el error:
Error: Cannot change the host configuration.
Error Stack
Call "HostStorageSystem.ResolveMultipleUnresolvedVmfsVolumes" for object "storageVolume" on vCenter Server "MyVC" failed

Solución:

a) Cuando solo propone el formateo es porque el datastore esta utilizado por una VM en marcha o por algún mecanismos de vmWare View. No muevas los clones con el vCenter, si es preciso para los servicios del composer e incluso el View Server
b) Cuando ya puedas añadirlos manualmente utilizando la signatura existente, deberás conectar el cliente vCenter directamente al host ESX. (esto es no al vCenter Server). De esta forma evitaras el error mas arriba.

Referencias:

Las formas en que un iSCSI te puede causar problemas en vmWare son infinitas, pero yo encontré mi solución desde los logs y gracias a estas dos entradas que se complementan.
Forcemounting a VMFS datastore residing on a snapshot LUN results in the error:Cannot change the host configuration




domingo, 19 de agosto de 2012

Script PowerShell para apagar infraestructura vmWare

Enunciado

Quieres que en caso de corte de suministro eléctrico prolongado las maquinas virtuales de tu infraestructura vmWare se apaguen ordenadamente por grupos y dejando para el final las maquinas mas críticas (los servidores de dominio).

Entorno

En mi caso dispongo de un SAI EATON que puede notifica a un software Intelligent Power Protector que puede lanzar un batch.

Solución

Me baso en el post http://www.virtu-al.net/2010/01/06/powercli-shutdown-your-virtual-infrastructure/ y algunos de los comentarios que allí hacen.
Coloco las maquinas que deben apagarse en varias carpetas o grupos según su importancia.
La idea es lanzar el siguiente script PowerShell desde un batch (powershell script.ps1)
if (!(get-pssnapin -name VMware.VimAutomation.Core -erroraction silentlycontinue)) {
     add-pssnapin VMware.VimAutomation.Core
 }
Set-PowerCLIConfiguration -DisplayDeprecationWarnings $false -Confirm:$false 

function ApagaMaquinasCarpeta 
#Ordena el apagado de las $maquinas en un grupo (host, carpeta, cluster,...etc) y espera un $tiempo dado 
{
 write $Carpeta
 $Maquinas=Get-Folder -Name $Carpeta 
 Foreach ($VM in ($Maquinas |Get-VM  )){
      Shutdown del invitado
     $VM | Shutdown-VMGuest -Confirm:$false
 }
 #Bucle esperando que apague
 $Inicio= (Get-Date).TimeofDay
 do {
   sleep 1.0
  $Lapso=(Get-Date).TimeofDay - $Inicio
     $Quedan = $Tiempo - ($Lapso.TotalSeconds)
  write  $quedan
  $numvms = ($Maquinas |  Get-VM | Where { $_.PowerState -eq "poweredOn"} ).count
  write "Esperando que se apaguen $numvms VMs o que transcurran $Quedan segundos"
  } until ((@($Maquinas |  Get-VM | Where { $_.PowerState -eq "poweredOn"} ).count -eq 0) -or ($Lapso).TotalSeconds -ge $Tiempo)
 write "Maquinas apagadas o plazo consumido ($Lapso)"
}
 clear 
$VCenter= "vcenter.empresa.org"
 
Connect-VIServer $VCenter
$Hosts= Get-VMHost
$Tiempo=1
$Carpeta= "Apagado Directo"
ApagaMaquinasCarpeta 
$Tiempo=20
$Carpeta= "Escritorios"
ApagaMaquinasCarpeta 
$Tiempo=300
$Carpeta= "Servidores"
ApagaMaquinasCarpeta 
$Tiempo=300
$Carpeta= "Ultimo apagado"
ApagaMaquinasCarpeta 
$ESXSRV = Get-VMHost
$ESXSRV | Foreach {Get-View $_.ID} | Foreach {$_.ShutdownHost_Task($TRUE)}
Disconnect-VIServer -server $VCenter -Confirm:$false
write "Fin"
#Apago la estación IPP
Stop-Computer

Comentarios

Eaton suministra un modulo para instalar en la infraestructura, pero me gusta mas esta solución porque puedo verla, probarla y guardar un archivo de seguimiento (redireccionando powershell).

Alguien se preguntará el por qué no uso parámetros de función en lugar de variables globales: no funcionaban, tenia prisa y trabajar con mandatos del tipo shutdown me pone muy nervioso.
En primer lugar porque un error te tira todas las maquinas, pero también porque la actualización ESXi 5.0 me había dejado sin módulos de shutdown, en el agosto mas caluroso desde hace años y podían producirse cortes de suministro por el elevado consumo de aire acondicionado.