Mostrando entradas con la etiqueta VMware HA. Mostrar todas las entradas
Mostrando entradas con la etiqueta VMware HA. Mostrar todas las entradas

sábado, 2 de agosto de 2008

Monitorización de VMs con VMware HA


Como la mayoria de vosotros sabreis, VMware High Availability (VMware HA) monitoriza la Infraestructura Virtual para ver si hay caidas de Servidores ESX y reinicia las VMs que son interrumpidas por dichas caidas de los servidores ESX en otros ESX con mejor salud.

Desde la ESX 3.5, Vmware HA puede detectar y manejar los fallos a nivel de VM y responder de forma apropiada de acuerdo a nuestras especificaciones. Con esta funcionalidad nueva(todavía en beta), llamada "VM Failure Monitoring", VMware Ha es/será capaz de tratar tanto caidas de servidor ESX como caidas de VMs individuales(usando las VMware tools, claro).
Aquí podeis encontrar un papel tecnico que es poco conocido pero muy interesante de leer.

Si a esto le añadimos el hecho de que VMware compró B-Hive, podemos ver por donde pueden ir los tiros en lo que se refiere a Alta Disponibilidad y Nivel de Servicio en la Infrastructura Virtual.

/* Me marcho de vacaciones, ya os contaré qué tal ha ido la pequeña aventura que estamos montando. ;-)
*/

viernes, 6 de junio de 2008

Parte III: ¿Como funciona DRS de VMware?

Tips:
  • Primero vigilar el DRS y ver como funciona. Cuando uno se siente seguro y pasado un periodo de aprendizaje, usar Fully Automated para la politica general y para las VMs criticas configurar a nivel de VM la politica de Manual o Partilly Automated.(Vmware DRS, Virtual Machine Options).
  • Usar DRS y Pools de Recursos para un numero de hosts ESX, NO en CADA host ESX.
  • DRS es proactivo, actúa para balancear y no provoca down time. No confundir con VMware HA que es reactivo: actúa cuando se ha caido un host y si tiene down time de las VMs.
  • El maximo numero de hosts en Virtual Center 2.0 es de 16 para DRS y HA
  • Se puede usar Resource Pools anidados y Fixed Reservations para el parent resource pool. Aunque mejor usar shares: se adaptan dinamicamente y los limites estáticos pueden volverse inmanejables.
  • Cuando DRS hace recomendaciones con muchas estrellas: Hadle caso
  • Pon las maquinas que se "hablan" mucho juntas (mismo Host, vSwitch y Portgroup) y usa reglas de afinidad para ello: conseguirar que su red vaya a velocidad de RAM.

Monitorizacion:
La monitorizacion del Cluster se puede realizar a traves del propio Virtual Center.

Un cluster sin ningun color en particular nos indica que todo esta correctamente.
Un cluster de color amarillo(Overcommited or Host down) indica que algun requerimiento de recursos no esta siendo satisfecho por el cluster.(Solucion: aumentar recursos o decrementar reservations)
Un cluster de color rojo nos indica que el cluster esta inconsistente o es invalido
(Cambios en resource pools a traves del VIC directo contra un host en lugar de hacerlo por el VCenter, o capacity failover)


Fallos Comunes:
En general DRS funciona bastante bien sin que nos dé sobresaltos.

Errores de DRS

  • No se puede encender una VM aunque tenga de reservation menos que la capacidad sin reservar del resource pool.
Causa: El host tiene que tener suficiente Aggregate unreserved capacity y Per-core capacity.
Solucion: Establecer en los hosts esta opcion de configuracion Cpu/VMAdmitCheckPerVcpuMin to 0 (OJO: not recommended)


Errores de VMotion:
  • Relacion de cluster entre VMs (MSCS)
  • La VM tiene afinidad a una CPU fisica:
Solución: Quitar la VM del cluster, quitar la afinidad y volver a meter al cluster DRS.
  • La VM tiene conectado el CD-ROM / floppy

Alertas de VMotion:
  • La VM esta configurada a un virtual switch interno pero no esta conectada a él.
  • La VM está configurada para acceder al CD-ROM/floppy pero NO está conectada a él.

Link Parte I:
Parte I: ¿Como funciona DRS de VMware?

Link Parte II:
Parte II: ¿Como funciona DRS de VMware?

jueves, 5 de junio de 2008

Parte II: ¿Como funciona DRS de VMware?

Arquitectura:

DRS tiene dos niveles de planficador (Scheduling levels):
  • Local: En el host ESX. Determina que procesador ejecutará la VM.
  • Global: En el Cluster. Determina que host ejecutara la VM.

El modulo de DRS se ejecuta en cada host ESX y es evocado por el VCenter Server (vpxd), su evocacion puede ser periodica (cada 5 minutos) o por evento (añadir un host, retirada de uno...)

Como hemos comentado el output del algoritmo de DRS son las recomendaciones. Dichas recomendaciones pueden tener más o menos impacto en la reduccion del desequilibrio en el cluster, por ello a cada recomendacion se le da un rating: Las estrellas. Segun dicho rating el sistema determinara si usar o no Vmotion para mover la VM en cuestion. El hecho de que se aplique o no directamente determinada recomendacion dependerá del numero de estrellas y el modo de Umbral de Migracion(Migration Threshold) en el que estemos. Dicho umbral establece qué migraciones se llevaran a cabo automaticamente, desde el Mode Conservative (que solo aplica las que tiene 5 estrellas), al Agressive, que aplica todo lo que tenga una o mas estrellas.

Los requerimientos para formar un Cluster DRS son como los de Vmotion, requiriendo storage compartido y las etiquetas de las redes consistentes en todos los hosts (son case sentitive!!!!).



¿Que ocurre si quitamos un host del Cluster?
Si tenemos Manual o Partially Automated nos mostrará sus recomendaciones, si tenemos configurado Fully Automated las VMs seran migradas a otros hosts.

¿Que ocurre si ponemos un host en Maintenance Mode?
Las operaciones en dicho host se restringen automaticamente: No se pueden encender nuevas VMs dicho host y no se pueden migrar VMs a dicho host.
El administrador debera apagar las VMs o migrarlas a otras (se recomendara) y posteriormente apagar el host.
(El host marcado como en mantenimiento no sera tenido en cuenta para HA)

¿Qué ocurre si se cae el Virtual Center Server?
Los hosts seguiran corriendo usando los recursos disponibles pero no habra recomendaciones para optimización de recursos.

Link a la Parte I:
Parte I: ¿Como funciona DRS de VMware?

Link a la Parte III:
Parte III: ¿Como funciona DRS de VMware?

lunes, 2 de junio de 2008

Parte I: ¿Como funciona DRS de VMware?

Despues de completar el post de ¿Cómo funciona VMware HA?, me permito continuar con la saga. La documentacion técnica de VMware sobre estos dos temas que se usan ampliamante en produccion me parece muy limitada, por eso veo necesario hacer este pequeño compendio de información para tener a mano.

DRS quiere decir Distributed Resource Scheduler y es quien se ocupa de balancear la carga que tienen los Host ESX de un cluster, mejorando el uso de los recursos y pools de recursos en un cluster. Cuando decimos carga nos referimos a los parametros de CPU y memoria, no tiene en cuenta el uso de I/O ni de disco ni de red, ni otros overheads que también influyen en la capacidad de nuestros host. El algoritmo de DRS tiene como entrada la informacion de uso de los recursos tanto de las VMs como de los Hosts y como salida las recomendaciones de movimientos de las VMs de un host origen a otro destino, es decir el emplazamiento de las VMs.
DRS acepta tres modos de funcionamiento: Manual, Partial o Full Automated Control y dependiendo del modo elegido el emplazamiento de las VMs se hará de forma más o menos automatica.

Las recomendaciones (output del algoritmo DRS) se basan principalmente en :
  • Asegurar las politicas de recursos de forma ajustada:
    • Reservation: Garantia de recursos (al menos X)
    • Limits: Limite superiror(No mas de X)
    • Shares: Prioridad relativa (si el sistema esta overcommited)
  • Balancear carga de las VMs:
    • Balanceo de la media de CPU y memoria
  • Host en maintenance mode.

Restricciones de emplazamiento:
  • Affinity/Anti-affinity rules (x ej Controladores de dominio en diferentes hosts o servidor de aplicaciones y base de datos juntos para aumentar el rendimiento(al no ir por red fisica...))
  • Vmotion Compatibility (Tipo de CPU, LAN, conectividad SAN)

Etapas en DRS:

Emplazamiento Inicial:
Cuando encendemos por primera vez una VM en un cluster DRS aporta una lista priorizada de los host que pueden ejecutarla. En el modo Manual, DRS nos muestra su recomendacion y el administrador elige, en cambio en los modos Partially y Full Automated el administrador no elige, simplemente la emplaza en el primer host de su lista.

Operaciones en ejecucion:
Durante la operativa normal las VMs estan corrindo cada una en su host. Las variaciones de CPU, memoria (factores como se ha comentado arriba), hacen que DRS nos haga sus recomendaciones.
En el modo Manual y el Partailly Automated, el DRS nos hace recomendaciones y administrador las acepta o no. En Full Automated DRS decide él solito.


Link Parte II:
Parte II: ¿Como funciona DRS de VMware?

Link a la Parte III:
Parte III: ¿Como funciona DRS de VMware?

lunes, 7 de abril de 2008

como funciona VMware HA

Bueno despues de varios posts cortos aqui va uno largo que llevo preparando tiempo.

La documentacion de VMware acerca de VMware HA deja bastante que desear y realmente es un producto que muchas veces necesitas conocer más a fondo para resolver problemas que te encuentras, por eso veo necesario tener una pequeña guía (técnica) de cómo funciona VMware HA:

VMware HA monitoriza constantemente todos los ESX de un cluster y detecta las caidas de estos. En cada host hay un agente corriendo que mantiene el heartbeat con los demas hosts del cluster. La perdida del heartbeat inicia el proceso de reiniciar las maquinas virtuales en los otros hosts proporcionando de esta forma un fail over de las maquinas virtuales con una parada minima(downtime = tiempo de reinicio) de servicio.

Es importante resaltar que HA es reactivo, es decir actua cuando ocurre algo y NO usa Vmotion y DRS es proactivo: usa vmotion y actua para que no ocurra nada o para que no se de la situacion en la que pueda ocurrir.

El hecho de que las VMs se inicien en un host o en otro cambió en el VC2 y el VC2.1: El primero lo hacia alfabeticamente, es decir la VM se iniciaba en el siguente host alfabeticamente que tuviese recursos, en cambio en el VC2.1 el host que iniciara la VM sera el host que tenga mayor capacidad(sin reservar) para levantarla. Una vez que HA ha realizado el paso de VMs, el DRS entra en juego y verá si es necesario mover las VMs.

VMware HA no controla la caida individual de una VM, ésto puede tratarse con una alarma, ya sea con el Virtual Center o con un software de monitorizacion externo.

Arquitectura:

La creacion y administracion de los clusters de HA se hace a traves del VC. El servidor de administracion del Virtual Center instala un agente en cada host del cluster de forma que cada host pueda comunicarse con los otros y mantener la informacion del estado de los hosts y poder asi decidir que hacer en caso de caida de otro hosts.
En cada cluster hay un host que es el primario(suele ser el primero) que actua como controlador y es el que inica las accciones de failover. De hecho, cuando se introduce un nuevo nodo al cluster, éste ultimo necesita comunicarse con el primario para completar la configuracion. Si el nodo primario cae, HA inmediatamente promociona uno de los nodos a primario.
Actualmente AAM no permite mas de 4 hosts y el parametro de max number of failures se refiere al maximo numero de primarios que podria haber en un cluster.

- Cuando queremos quitar un nodo del cluster lo podemos poner en Maintenance Mode y apagar las VMs o migrar (vmotion) sus VMs (si DRS esta activado, éste nos lo propondrá o lo hara directamente).
- Cuando se añade un nuevo nodo al cluster, todas las VMs se ponen a default: Restart Prioriy = Medium e Isolation Response = PowerOff

Nota: Para apagar temporalmente HA ponemos el ESX en maintenance mode y para apagar temporalmente DRS lo configuramos como partially automated.

El agenteVC (vpxa) se comunica con las VMs y VMAP (este ultimo contiene la lista de que hosts estan corriendo que VMs). El agente AAM (HA agent) monitoriza AAM en otros hosts (heartbeat via red SC), para evitar el split brain cuando los nodos se quedan aislados, cada nodo tiene una direccion a la que hace ping para ver si esta aislado (option das.isolationaddress ).
[Mas opciones avanzadas: http://pubs.vmware.com/vi35/resmgmt/wwhelp/wwhimpl/common/html/wwhelp.htm?context=resmgmt&file=vc_cluster_das.10.9.html]

Los requesitos para que funcione HA son:

  • Capacidad de encender la VM desde cualquier host
  • Acceso a recursos comunes(red, SAN)
  • Resolucion de DNs en el cluster(tiene muchisima dependencia /etc/hosts y /etc/resolv.conf)

Parametros a Configurar:

Orden de reinicio de las VMs: Establece que prioridad de reinicio tienen las VMs. Se debe establecer a Disabled si no queremos que se use HA en dicha VM.

Admision Control: Aqui se prioriza el uptime o que las maquinas tengan sus recursos siempre.

Isolation response: Que hacer si se queda aislado el host: el power off de las VM liberará el lock de los discos.

Nota: Cuando se añade un nuevo nodo al cluser, todas las VMs se ponen a default: Restart Prioriy = Medium e Isolation Response = PowerOff


¿Que ocurre si el VC Server se cae?

El Virtual Center Management Server(servidor del VC) no es un unico punto de fallo porque si cayera el VC Server los clusteres de HA siguen pudiendo reiniciar las maquinas virtuales en otro host en caso de caida de uno de los hosts de forma que el funcionamiento general sigue pero la informacion de que recursos estan disponibles será la del estado del cluster antes de caer el VC Server.

Si entramos con el VIC a un ESX y cambiamos algo mientra el VC esta caido entonces eso cambios si tienen efecto y cuando repongamos el VC los verá.(En cambio si el VC no esta caido y modificamos algo con el VIC a traves de un ESX , el VC no lo verá y tendrá desactualizado su VMap etc...)

VMware HA esta continuamente monitorizando qué recursos hay para ser capaz de reiniciar las maquinas en diferentes hosts en caso de caida de uno de ellos. El agente AAM se ejecuta en la service console de los hosts y mantiene una base de datos en memoria de los nodos del cluster usando los heartbeats para coordinar los nodos que estan activos y los que no (los que no son activos son los que estan sin red o en maintenance mode).

El hecho de que una maquina virtual pueda ser levantada en otro servidor ESX(host) es posible gracias a la tecnologia de locking de la pila de almacenamiento del ESX que les permite a varios ESX acceder a un mismo disco simultaneamente.


¿Que ocurre cuando un host se cae? (Cronologia del Fail-Over)

Todo el proceso dura 15 segundos despues de que el host se quede aislado y no mande mas heartbeats:

t=0s: Un host deja de tener conectividad(o se queda aislado en la red) y deja de mandar heartbearts. El nodo intanta hacer pings a la isolation address para ver si efectivamnete esta aislado.(la verification address es el default gw de la interfaz de la service console, para cambiarla hay que cambiar el parametro das.isolationaddress en advanced parameters). Si no puede hacer ping a su isolation address entonces el nodo sabe que esta aislado y no que los otros nodoas se han caido.

t menor que 12s: Si antes de 12 segundos vuelve la conectividad, todo vuelve a la normalidad. Los demas hosts marcaran al hosts con problemas de red como activo y no pasará nada. El host no se marcará a si mismo como aislado.

t entre 12s y 15s: El host se marca como aislado(isolated) y empieza a apagar sus maquinas para liberar locks(respuesta por defecto y configurable). Si justo la conectividad vuelve en este momento las maquinas virtuales se apagaran(si esta conf por defecto) pero no se levantarán(reiniciarán) en otros hosts porque los otros no le han marcado todavia al host como caido(failed). El apagado de las maquinas es hard.

t=15s: Los demas hosts declaran el host como caido(failed) y en consecuencia adquieren el lock de las maquinas virtuales y las levantan(si asi lo hemos configurado, si no la VM seguira corriendo en el host aislado y el mecanismo de locking prevendrá que no se inicie en otro sitio).

http://kb.vmware.com/selfservice/viewContent.do?language=en_US&externalId=2956923


¿Que ocurre si Current failover capacity != Configured failover capacity? (Red Cluster)

Esto ocurre cuando han fallado mas hosts que los previstos. Las VMs con mayor prioridad haran el fail over las primeras. Para la version 3.02 de ESX y anteriores, el valor de HA Failover Capacity se calcula así: El valor de Failover Capacity está determinado por el valor del slot que tiene el cluster. El slot es calculado con una combinacion de la CPU y Memoria total que hay en los hosts.

Ejemplo:
Tenemos 4 hosts y el valor CONFIGURADO de Failover Capacity es 1 Los hosts tienen esta memoria: ESX1 = 16 GB
ESX2 = 24 GB
ESX3 = 32 GB
ESX4 = 32 GB
En el cluster tenemos 24 VMs configuradas y funcionando. De las 24, hay que determinar cual es la que mas "configured memory" tiene. Por ejemplo pongamos 2GB. Las demas tienen menos o igual a 2GB de memoria configurada. Con esto ya podemos hacer el cálculo:
1. Escojemos el host ESX que tenga menor memoria RAM intalada. En este caso es ESX1 y tiene 16 GB

2. Dividimos este valor por el mayor valor de la memoria RAM de nuestras maquinas virtuales(2GB en el ejemplo). Nos sale 8 (16 / 2). Esto significa que tenemos 8 slots disponibles(como minimo) en cada ESX.

3. Como tenemos 4 hosts y la failover capacity configurada es de 1, nos podriamos quedar con 3 hosts en la peor situacion(que cayera uno). Por ello el numero total de VMs que podemos encender en esos 4 hosts es 24 VMs. ( 8 slots x 3 hosts en el caso peor = 24 VMs)

4. Si el numero total de VMs excede 24 entonces nos dará: "Insufficient resources to satisfy HA failover" y el el valor de "current failover capacity" será puesto a 0. Si el numero de VMs encendidas es menor que 24 no obtendriamos este mensaje.

Nota: Si se sigue viendo el mensaje despues de bajar el numero de maquinas encendidas, chequea las reservations de CPU y Memory en las VMs y en los resource pools porque esto puede modificar el calculo. Se debe evitar reservations de CPU y memoria innecesarias en las VMs porque esto puede causar que ocurran estos tipos de errores dado que tenemos que asegurar que el recurso esta disponible.



Para que el Virtual Center deje de estar en una situacion en la que los recursos son insuficientes para satisfacer VMware HA posdemos hacer lo siguente:

1.- Marcar "Allow Virtual Machines to be powered on even if they violate availability constraints" en la confiduracion del cluster. En este caso se ignoran los calculos anteriormente descritos y se intentará encender el maximo numero de VMs posibles en caso failover. Con esta opcion se puede establecer la restart priority (en "Virtual Machine Options") en la configuracion del cluster, de esta forma, las VM prioritarias seran encendidas antes y posteriormente las menos prioritarias hasta en punto en el que ya no se pueda encender ninguna VM más

2.- Si tenenmos una VM que tiene configuarada una gran cantidad de memoria, podemos o bien rebajar su memoria configurada o bien sacarla del cluster y ejecutarla en otro ESX standalone. Esto incrementará el numero de slots disponibles con el hardware que tenemos.

3.- Incrementar la cantidad de memoria en los servidores de forma que haya mas slots disponilbes con las reservatiosn de RAM actuales.

4.- Quitar las reservas de CPU en todas las VM que sean mayores que la velocidad maxima de los procesadores fisicos.

Nota:
El calculo descrito arriba es muy limitado como se puede ver y va a ser revisado en las siguentes versiones del Virtual Center.


Troubleshooting:

- Conectividad IP: pings desde todos a todos y con el nombre corto y el FQDN. Pings al VC server

- DNS!!!:
  • Se pueden resolver los nombres cortos(sin el dominio) en cada ESX de los otros ESX
  • El FQDN es menor de 29 caracteres?
  • Mirar el /etc/hosts y /etc/resolv.conf poner en esos ficheros el "hostname.FQDN" tambien.
  • Se puede editar el nsswitch.conf y cambiar: "hosts: dns files". Asi mira primero en dns y si estan caidos en local.
- Que la red y el almacenamiento sea visible por los nodos.
- Que no haya habido usuarios que hayan accedido con el VIC al host en concreto bypasseando al Virtual Center y hayan cambiado las reservations.
- Logs: /opt/LGTOaam512/log/* y /opt/LGTOaam512/vmsupport/* .
Principalmente aam_config_util_listprimaries.log (hosts primarios) y aam_config_util_listnodes.log


Errores y problemas tipicos:

"Could not find a primary host to configure DAS on"
A host that was removed from the VC inventory still appears on the internal list of hosts for this cluster.
Workaround: create a new cluster and add hosts to this new cluster.
Resolved in ESX Server 3.0.1 and VC 2.0.1.

"Configuring HA failed" or "while using HA, the vm did not failover".
Size of Fully Qualified Domain Name (FQDN) or short host name.
Workaround:
If the host short name is more than 29 characters, change the HOSTNAME entry in /etc/sysconfig/network to the shorter name.
If using an FQDN that is greater than 29 characters:
• Change the FQDN to less than or equal to 29 characters.
• Remove the existing cluster.
• Create a new cluster.
• Add all the hosts back to the cluster.

HA Configuration Fails
Check DNS, FQDN
You have just added a new host to the cluster
• Check /opt/LGTOaam512/log/aam_config_util_addnode.log
• /var/log/vmware/vpx/vpxa.log
• In VC, right click on the host that shows the HA problem and click reconfigure for HA.
• Were all the hosts responding?
• If not –new host cannot communicate with any of the primary hosts.
• Solution:
• Disconnect all the hosts that are not responding before you can add the new host.
• The new host becomes the first primary host.
• When the other hosts become available again, their HA service is reconfigured. ESX Server is running slowly.

Top command shows vmware-hostd using a lot of resources
vmware-hostd Uses a Lot of CPU or Has Generated a Core Dump Why DRS / HA cluster that contains VMs originally built on an ESX Server 2.x host.
Fix: To adjust resource allocation for vmware-hostd: For each VM, right click it and go to Edit Properties. Select Resources. Ensure you "touch" each CPU and memory resource:
• Restart hostd: type: service mgmt-vmware restart
• Set resources to the settings you want.

"HA service doesn't start up" or "HA error on the host, after booting successfully after host failure"
Due to problem rejoining the rest of the cluster
Fix: use the ReconfigureHA task on the host to correctly configure the HA service on the host.

Deploying a VM from a template into a cluster, the updated BIOS settings are lost.
Affects HA/DRS clusters but not DRS-only clusters.
Fix: Change the BIOS setting in the affected deployed VM.