martes, 25 de febrero de 2014

Alta disponibilidad con VMWare ESXi (II)

Siguiendo la entrada Alta disponibilidad con VMWare ESXi (I) , lo único que queda por ver es el script usado en el servidor de redundante.

El script es muy parecido aunque su principal diferencia es que debe estar en SIEMPRE en ejecución.


Cada 10 segundos pasará por el do comprobando primero la ley 3 que se explicó en  Alta disponibilidad con VMWare ESXi (I) , y acto seguido la ley 4.

Se han de evitar posibles problemas como; conflicto de IPs entre las interfaces y el tiempo de respuesta entre que cae un servidor y se levanta el otro.

El número de intentos en ambos casos indica la cantidad de veces que va a intentar conectar o desconectar las interfaces, ya que podría darse el caso de haber un fallo de red y no de sistema o hardware del servidor.

Como he dicho antes este script se debe ejecutar siempre, así que además de configurar el script al iniciar el sistema, como en el caso del servidor1 si observamos el script, siempre estará dentro del do no dejando que la función muera..



Podemos ver desde el administrador de tareas como el proceso wscript nunca desaparece.


lunes, 17 de febrero de 2014

Alta disponibilidad con VMWare ESXi (I)

El paquete Free VMware vSphere Hypervisor: https://my.vmware.com/web/vmware/evalcenter?p=free-esxi5&lp=default es una versión gratuita de VMware ESXi, no se puede gestionar por un vCenter pero será suficiente para realizar la prueba.

Mi escenario es el siguiente:

Dos controladores de dominio que actúan juntos, estos hacen de servidor de archivos configurados con DFS. La intención es dejar el servidor de archivos accesible bajo cualquier circunstancia.
Para crear este proceso de HA "chapucero" necesito dos interfaces de red en cada controlador de dominio, digamos interfaz1 e interfaz2.

Las leyes son las siguientes:
1- La intetrfaz2 de ambos servidores está desconectada al inicio.
2- Si el controlador de dominio principal responde bajo la dirección de la interfaz1 se habilitará la interfaz2 del servidor1.
3- Si el controlador de dominio principal no responde bajo la dirección de la interfaz1 se habilitará la interfaz2 del servidor2.
4- Si el controlador de dominio principal responde bajo la dirección de la interfaz1 y responde el servidor2 bajo la interfaz2 se des-habilitará la interfaz2 del servidor2.


El controlador de dominio principal, servidor1, necesitará de un script al encender por primera vez tras un reinicio, apagado o caída. Este script comprobará la ley 4. Una vez realizada la acción el script puede morir.

¿Qué necesitaremos para crear el script?
-Función para realizar un ping.
-VMware Tools en nuestros servidores virtualizados.





viernes, 14 de febrero de 2014

Detectar si un dominio tiene registros MX con Powershell

Para inaugurar este pequeño rincón y empezar a añadir herramientas a la movida, que mejor forma de hacerlo que con Powershell.

Ámbito de la aplicación: Administrativo
Uso personal de la aplicación: Yo personalmente uso la siguiente técnica para lidiar con tareas administrativas. Por ejemplo, cada cierto tiempo se me remite un listado en Excel con varias columnas, una de ellas corresponde a "Emails", puede haber uno o más siendo estos separados por comas. Bien, con la función que os voy a enseñar compruebo los dominios de los correos para evitar rebotes de nuestro servidor de correos.


Para empezar con la explicación, remarco que aquí solo pondré la función que comprueba los dominios:

Ejecutamos Windows Powershell ISE y al lío.


Lo primero a pensar es si necesitaremos pasar algún parámetro y si tendremos que devolver algún valor. En este caso ambas cuestiones se responden con un sí.
Le pasaremos por parámetro el dominio a comprobar y devolveremos un valor entero para determinar el estado.

El siguiente paso, es averiguar como comprobar si existen registros MX en el DNS del dominio que estamos comprobando. Todos conoceréis nslookup, pues va a ser la reina del baile, ya que es tan sencillo que prácticamente no tendremos que hacer nada.

Sintaxis nslookup para comprobar un registro MX en un dominio:
nslookup -type=mx $dominio 

Para ejecutar comando en powershell lo haremos como nos dicen los manuales con el cmlet Invoke-Expression. Quedaría algo así:

Invoke-Expression -Command "nslookup -type=mx $dominio" 2>$null

He decidido redirigir los mensajes de error a null ya que no queremos que nos molesten pequeños warnings como la respuesta no autoritativa. 

Necesitaremos recorrer la respuesta del nslookup y esto lo haremos encadenando la expresión Invoke-Expression con un foreach-object. Al recorrerlo mediante el parámetro -match comprobaremos si existe la cadena 'mail exchanger', y si es así sumaremos 1 a un contador.

Si el contador es igual o mayor a 1 significa que el dominio ha devuelto como mínimo una cadena que contiene 'mail exchanger' y por lo tanto existe un registro MX en el DNS.

Devolveremos 1 si existe 0 si no existe.
Código completo: