P2V: haciendo el cambio
En el trabajo hemos hecho algunas conversiones de equipos físicos a virtuales, concretamente máquinas con Windows Server. Utilizamos VMware Converter para esta tarea. Es una herramienta semiautomática, así que posteriormente pueden ser necesarias acciones adicionales, como desinstalar hardware ya inexistente, configurar el disco Quorum en sistemas MSCS, etc. Todo esto se hace mientras el sistema virtualizado está aislado de la red en producción, para evitar problemas de duplicado de nombres y direcciones IP (en caso de ser estáticas). Para terminar, lo normal sería apagar la máquina física e iniciar la virtual. Las aplicaciones que dependan de estos servidores tendrán unos minutos de parada hasta que ésta arranque.
El problema que tenemos en el trabajo es que no tenemos acceso físico a las máquinas. Operamos a través de escritorio remoto. Si durante el cambio apagamos la máquina física y la virtual no funciona correctamente, no tenemos una manera directa de volver a encenderla. Por supuesto, podemos llamar a una persona de mantenimiento, pero es mejor no hacerlo si no es estrictamente necesario, por el coste que supone. Una posible solución sería emplear Wake On LAN (WOL), un protocolo que permite encender máquinas a través de la red. El dilema es que no sabremos a ciencia cierta si esto funcionará hasta que lo probemos, y como las máquinas están a distancia, sólo tenemos un intento. Si alguien en la empresa lo hubiese comprobado con anterioridad, me hubiese animado a hacerlo, pero no era el caso.
Hasta ahora, lo que hacíamos era cambiar la IP y el hostname de la máquina virtual, pudiendo así mantener simultáneamente la física encendida. Después, para evitar reconfigurar todas las aplicaciones dependientes, cambiábamos en el DNS la entrada de la máquina física, estableciendo su IP a de la máquina virtual. Esto es un poco desastroso. Primero, porque en el caso de MSCS, el servicio de cluster falla al cambiar de hostname, lo que obliga a borrar (comando cluster node <nombre del nodo> /forcecleanup) y reconfigurar éste. Segundo, porque en el DNS queda una misma IP con dos nombres. Esto será muy confuso para un futuro administrador.
Pensando una solución alternativa para P2V futuras, se me ocurrió apagar los puertos del switch. De esta forma, podemos aislar a la máquina física antes de encender la virtual. Si resulta que encontramos algún fallo en la virtual, basta con apagar la correspondiente a la virtual y encender la de la física. La estructura de red que tenemos es la siguiente:
Internet -> Router ISP -> Router Juniper SRX-240 ->
Router/Switch Enterasys N7
Del Enterasys cuelgan todos los cables de red a las máquinas físicas y a un blade de HP donde están las virtuales. Nos conectamos a él a través de Telnet, y consultamos el puerto en el que está la mac correspondiente a la máquina que queramos desconectar:
N7-ACTIVA-MULTIMEDIA(su)->show mac address 00-A0-C9-44-CD-32
MAC Address FID Port Type Status
----------------- ---- ------------- ------- -------
00-A0-C9-44-CD-32 30 ge.3.70 learned
Comprobamos que no hayan más máquinas conectadas ese puerto (ya sea a través de un hub, switch, o un segundo ordenador que cuelgue del que queremos desconectar):
N7-ACTIVA-MULTIMEDIA(su)->show mac port ge.3.70
MAC Address FID Port Type Status
----------------- ---- ------------- ------- -------
00-11-88-BB-38-75 0 ge.3.70 self
00-A0-C9-44-CD-32 30 ge.3.70 learned
La que pone de tipo «self» es la mac del puerto ge.3.70 del propio switch, no un ordenador, así que no hay nada por lo que preocuparse.
Finalmente, para desconectar:
N7-ACTIVA-MULTIMEDIA(su)->set port disable ge.3.70
Si la máquina virtualizada no funcionase correctamente, desconectamos primero ésta. A continuación conectamos de nuevo la física:
N7-ACTIVA-MULTIMEDIA(su)->set port enable ge.3.70
Debemos apuntar el puerto, la MAC y el nombre del equipo para no olvidarnos si hicimos la desconexión hace tiempo. Podemos ver el estado de los puertos mediante show port, pero no sabremos cuál de ellos correspondía a qué ordenador, porque la MAC es de tipo learned y se olvida pasado un tiempo agetime.
Si queremos dejar el puerto permanentemente desconectado, incluso después de un reinicio del switch, debemos guardarlo en memoria no volátil (NVRAM):
N7-ACTIVA-MULTIMEDIA(su)->
N7-ACTIVA-MULTIMEDIA(su)->router
N7-ACTIVA-MULTIMEDIA(rw)->Router>enable
N7-ACTIVA-MULTIMEDIA(rw)->Router#write file
Saving information to config...done
N7-ACTIVA-MULTIMEDIA(rw)->Router#