Saltar al contenido
Inicio / Virtualización / PowerShell: Pausar y Reanudar la replicación de nuestras máquinas virtuales

PowerShell: Pausar y Reanudar la replicación de nuestras máquinas virtuales

En algunos casos vamos a necesitar pausar la replicación de las máquinas virtuales (Replicar MV en Hyper-V con Windows Server 2012),  como por ejemplo lanzar nuestras tareas de backup sobre los VHD de las máquinas virtuales. A día de hoy existen múltiples herramientas de backup con agentes para este tipo de tareas, lo que nos permite en muchos casos realizar estos backups con las máquinas en ejecución. Pero seguramente más de uno tendremos un software de backup que no tiene soporte para Windows Server 2012 o bien el fabricante aun no ha sacado al actualización correspondiente. Esto puede causarnos un gran problema si nuestras máquinas virtuales deben estar operativas el 100% de su tiempo, pero si hemos implementado la replicación de máquinas virtuales con Windows Server 2012 podemos copiar los ficheros VHD de la máquina que recibe las réplicas. Esto nos permite realizar con garantias el backup de las máquinas y no tener que parar las máquinas de producción. Sin entrar en detalles de como se realizaria un backup de estas máquinas virtuales con distintas herramientas, voy a mostraros un scripts súper sencillo para pausar las la replicación de las máquinas virtuales, lo que nos permtirá copiarlas con total garantías a la hora de tener que recuperar alguna máquina. Además, de evitar errrores de sincronización de las máquinas virtuales.

Con PowerShell podemos hacer prácticamente cualquier cosa, por no decir cualquier cosa. Pero ahora vamos a centrarnos únicamente en como pausar y reanudar la tarea de replicación de las maquinas virtuales. Primero vamos a visualizar el estado de la replicación de las máquinas virtuales, para ello escribimos el siguiente comando: Get-VMReplication

Replicacion_MV_2.jpg

Como podemos observar todas la máquinas virtuales se están replicando correctamente, ahora vamos a pausar la replicación una máquina, para ello debemos ejecutar el siguiente comando: Suspend-VMReplication nombre_máquina

SINTAXIS
    Suspend-VMReplication [-VMName] <string[]> [-PassThru] [-ComputerName <string[]>] [-WhatIf] [-Confirm]
    [<CommonParameters>]
    Suspend-VMReplication [-VMReplication] <VMReplication[]> [-PassThru] [-WhatIf] [-Confirm]  [<CommonParameters>]
    Suspend-VMReplication [-VM] <VirtualMachine[]> [-PassThru] [-WhatIf] [-Confirm]  [<CommonParameters>]

Replicacion_MV_3.jpg

Como vemos ya tenemos “suspendida” la replicación de la máquina virtual, si ahora queremos volver a replicar la máquina virtual debemos escribir el siguiente comando: Resume-VMReplication nombre_máquina

SINTAXIS
   Resume-VMReplication [-VMName] <string[]> [-ResynchronizeStartTime <datetime>] [-Resynchronize] [-AsJob]
    [-PassThru] [-ComputerName <string[]>] [-WhatIf] [-Confirm]  [<CommonParameters>]
    Resume-VMReplication [-VMReplication] <VMReplication[]> [-ResynchronizeStartTime <datetime>] [-Resynchronize]
[-AsJob] [-PassThru] [-WhatIf] [-Confirm]  [<CommonParameters>]
    Resume-VMReplication [-VM] <VirtualMachine[]> [-ResynchronizeStartTime <datetime>] [-Resynchronize] [-AsJob]
[-PassThru] [-WhatIf] [-Confirm]  [<CommonParameters>]

Replicacion_MV_4.jpg

Como vemos es muy sencillo y rápido, por lo que ahora lo único que nos quedaría es crear dos scripts, uno para para las máquinas virtuales y otro para iniciarlas. Vamos a ver uno súper sencillo, directamente un CMD:

1. Pausar la replicaciónde las  máquinas virtuales: pausar-rpl.cmd

powershell suspend-VMReplication SRV-DC00
powershell suspend-VMReplication SRV-DC01
powershell suspend-VMReplication SRV-DC02
powershell suspend-VMReplication SRV-DC03

2. Reanudar la replicación de las maquinas virtuales: reanundar-rpl.cmd

powershell resume-VMReplication SRV-DC00
powershell resume-VMReplication SRV-DC01
powershell resume-VMReplication SRV-DC02
powershell resume-VMReplication SRV-DC03
Copiamos el texto de cada uno de los scritps en un fichero de texto y lo guardamos con la extensión .CMD, luego se los asignamos a las tareas de  pre y post de nuestro software de backup, acorde con nuestras planificaciones y con ello hemos terminado.
Si queremos tener ficheros de powershell sencillos, únicamente tenemos que quitar la palabra powershell del script y guardarlo como .PS1, ejemplo:
resume-VMReplication SRV-DC00
resume-VMReplication SRV-DC01
resume-VMReplication SRV-DC02
resume-VMReplication SRV-DC03
Si este script lo queremos ejecutar desde una máquina remota el cmdlet sería el siguiente:
Invoke-Command -ComputerName nombre_equipo -ScriptBlock {suspend-VMReplication SRV-DC00}
Invoke-Command -ComputerName nombre_equipo -ScriptBlock {resume-VMReplication SRV-DC00}
Ya veis que a veces no hay que complicarse mucho la vida, ni tener conocimientos de desarrollo ni de powershell, es cuestión de saber lo que se necesita en cada momento y ser práctico.

Espero que os sea de utilidad!!!

Etiquetas:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¡Comparte!