Cómo hacer copias de seguridad de las máquinas virtuales de Citrix Xen gratis con Xen-pocalypse (Bash)
¿Alguna vez ha necesitado hacer una copia de seguridad de sus máquinas virtuales Citrix Xen (VM) pero no quería romper el banco haciéndolo? HTG tiene el script bash para ti con Xen-pocalypse.
Imagen de h.koppdelaney, Stuck in Custom y Hotfortech.
Una de las cosas buenas de Citrix Xen es que muchas de sus características son gratis de cargo. Dicho esto, si desea la función "Protección y recuperación automatizada de máquinas virtuales", tendrá que comenzar a pagar la licencia "Avanzada". Incluso entonces, solo está pagando por las copias de seguridad a nivel de disco, que no son suficientes para muchos tipos de cargas de trabajo como Active Directory, Databases & Etc. Para superar esto, es posible que desee la "instantánea y revertir de memoria en vivo", que puede salvar todo el Estado de la máquina, incluido el contenido de la memoria RAM. Sin embargo, esa característica es parte de las ediciones "Enterprise" y "Platinum", que son aún más caras. No es que en HTG estamos descartando el valor de un verdadero software de copia de seguridad, pero si tiene un presupuesto ajustado y no le importa el tiempo de inactividad para la operación de copia de seguridad, puede que Xen-pocalypse sea una solución perfectamente razonable. antes de hacer el compromiso de presupuesto.
Visión general
El "caso de uso": tiene un par de máquinas virtuales que requieren una copia de seguridad. El "apagar una máquina virtual y exportarlo como un archivo" desde el "Centro Xen" con los clics correctos funciona bien, pero desea que este proceso se realice automáticamente y de forma programada. Este script Bash utiliza el comando "XE" para realizar sus tareas. XE es la interfaz de línea de comandos (CLI) de Xen, equivalente automático para emitir los "clics derechos" en el "Centro de Xen". Llamaremos a la secuencia de comandos de Cron, que suministrará la parte de "programación". En su forma más simple, el flujo de copia de seguridad es:
- Apague la máquina virtual de destino.
- Exportar la máquina virtual como un archivo a la ubicación de copia de seguridad.
- Si la máquina virtual estaba encendida, antes de que se inicie la copia de seguridad, se volverá a encender.
Pongamos manos a la obra :)
Obtener el guion
Xen-pocalypse se puede obtener libremente de github, usando los métodos regulares de git. Dicho esto, si aún no estás versado en git, puedes obtener el archivo zip con este enlace. Como el script debe ejecutarse en uno de sus servidores Xen, debe extraerlo allí para que se conserven los permisos de ejecución..
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
descomprimir maestro
Si bien lo anterior funcionaría, se recomienda utilizar el método GIT para poder beneficiarse de futuras actualizaciones..
Obtener SendEmail (opcional)
Hemos escrito sobre el programa perl SendEmail en el pasado, por lo que no es necesario reiterar aquí. Basta con decir que funciona de la misma manera en Linux que en Windows..
Si bien habilitar el correo electrónico es opcional, es altamente recomendable porque entonces el script podrá:
- Informarle cuando comenzó y terminó de correr..
- Avisarle de cualquier error que haya podido detectar y manejar..
- Informe de descalificaciones de copia de seguridad debido a problemas de espacio. (Este comportamiento se puede desactivar si no se desea)
Descárgalo al servidor Xen y extráelo..
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Anote la ubicación donde lo extrajo. Lo necesitarás para el archivo de configuración..
Definiendo Etiquetas
Citrix Xen le brinda la capacidad de configurar "Campos personalizados" para las capacidades de filtrado. Crearemos los campos y luego los rellenaremos con la información utilizada por Xen-pocalypse. Xen-pocalypse reconoce 3 TAG de control que designan el nombre de la etiqueta para la copia de seguridad y las relaciones padre a hijo. Si no tiene intención de utilizar el método de entrada de archivos, DEBE crear al menos el campo del nombre de la etiqueta de respaldo.
Para hacer esto, abra las propiedades del servidor o incluso de una máquina virtual. En el panel de navegación, seleccione "Campos personalizados".
Si esta es la primera vez que define una relación (como en el ejemplo anterior), no tendrá ningún campo para ingresar datos, por lo que debe crearlos. Para hacer esto, haga clic en "Editar campos personalizados" en el cuadro de diálogo que aparece, haga clic en "Agregar ..."
Cree tres (3) campos de tipo “Texto”. Uno se llamará "BackupTAG" y los otros "Padres" e "Niños".
Nota: Los nombres de los campos personalizados han sido "codificados" en la secuencia de comandos, por lo que NO DEBEN desviarse de la ortografía anterior, a menos que también cambie el código relevante.
Una vez que se hayan creado todos los campos, debería ver:
Cierre la ventana. Ahora debe tener los campos "BackupTAG", "Parent" y "Children" para completar, como se muestra en la imagen de abajo.
Ahora todo lo que tiene que hacer es designar qué máquinas virtuales pertenecen a qué "BackupTAG".
Por ejemplo, en la empresa donde se cultivó el script, tuvimos máquinas virtuales de las cuales se realizaría una copia de seguridad semanalmente los jueves y viernes, un programa para las máquinas virtuales de nuestros productos Atlassian y algunas de las cuales solo se realizaría una copia de seguridad mensual. Así que nuestra visión general parecía:
Donde, por ejemplo, "semanal-fri" fue el texto que ingresamos en el "Campo personalizado" de "BackupTAG". Limpio eh? :)
Padres e hijos (opcional)
La verdadera belleza de este script es que admite las relaciones de "padre" a "hijo". Es decir, es posible establecer una lista de máquinas virtuales "secundarias" que se apagarán y realizarán una copia de seguridad antes que la principal, y que estas secundarias solo se volverán a activar una vez que la principal haya finalizado la copia de seguridad y se haya devuelto en. Esto es útil en los casos en que la desactivación de la VM principal hará que el servicio en el secundario no esté disponible. Tal cosa significaría que el servicio en la VM secundaria no estaría disponible dos veces, una para el proceso de copia de seguridad del menor y otra para el padre. La creación de esta relación supera ese problema.
Por ejemplo, todas nuestras máquinas virtuales de Atlassian utilizaron una sola máquina virtual de base de datos (DB), que también se configuró para hacer una copia de seguridad. Entonces, al observar que la máquina virtual de la base de datos es un "padre" de las otras máquinas virtuales, se puede garantizar un orden correcto de apagado -> copia de seguridad -> inicio.
Al momento de escribir este artículo, esta función tiene un par de advertencias:
- Los nombres de las máquinas virtuales que deben tener dicha relación no pueden contener espacios. Deberá eliminar espacios de los nombres de sus máquinas virtuales, ya que estarán delimitados, como se muestra en el siguiente ejemplo..
- Sólo puede haber un padre. Designar más de uno ni siquiera está planeado, por no hablar de probado.
Para crear esta relación, vaya a las propiedades de la máquina virtual. Si este es un "padre", escriba quiénes son sus hijos y si es un "hijo", escriba quién es su padre. Por ejemplo:
Nota: no designar a un padre para un niño puede hacer que el niño se inicie antes de que esté listo, y puede hacer que se realice una copia de seguridad dos veces.
El método de archivo (opcional)
Por razones históricas, Xen-pocalypse también admite que se haga una copia de seguridad de la lista de máquinas virtuales como un archivo de texto. Si bien el "código" todavía está allí, la funcionalidad es muy inferior al método TAG y, por lo tanto, no se recomienda. Dicho esto, si prefiere utilizar el método de lista por algún motivo, se aplican las siguientes restricciones:
- Los nombres de las máquinas virtuales no pueden contener espacios ni caracteres especiales.
- Solo puede haber un nombre de máquina virtual por línea.
- No se permiten líneas en blanco.
Para generar la lista, copie el nombre de la máquina virtual desde el centro de Xen o ejecútelo en un host Xen:
xe vm-list | grep nombre-etiqueta | awk
'print $ 4' | ordenar
Copia la lista de arriba en un archivo de texto regular.
La ubicación de copia de seguridad
Mientras hurgaba al azar en Citrix Xen, he encontrado que los Repositorios de Almacenamiento (SR) están disponibles para su uso en "/ var / run / sr-mount /% UUID%" donde UUID es el identificador único de la SR, que puede ser obtenido de la GUI.
Esto significa que podemos usar el asistente regular "Siguiente -> Siguiente -> Finalizar" para crear el montaje en la ubicación de copia de seguridad deseada, y luego hacer que la secuencia de comandos use esa ruta (como corresponde al problema con el montaje desde la línea de comandos), pero Así está más allá del alcance de esta guía..
Para crear un nuevo "montaje", haga clic derecho en el nombre del servidor y seleccione Nueva SR.
En este ejemplo, apuntaremos a Xen a un recurso compartido de Windows, así que elija "Compartir archivos de Windows (CIFS)":
Completa el siguiente -> Siguiente -> Finalizar.
Obtener el UUID del SR
Para obtener el UUID de un SR, simplemente haga clic en su nombre en el Centro Xen y vaya a la pestaña "General".
Para copiar el UUID, simplemente haga clic derecho y seleccione "copiar".
Con esta información a mano, está listo para editar el archivo de configuración.
Configurar el archivo de configuración.
El proyecto Xen-pocalypse viene con una plantilla de archivo de "configuración". Esta plantilla debe editarse para reflejar su configuración y pasarla como primer argumento al script. El archivo de configuración designa lo siguiente:
El método para obtener las máquinas virtuales de las que se realizará una copia de seguridad: el método predeterminado es TAG. Puede cambiar esto a ARCHIVO, pero no se recomienda.
La locación del destino de la copia de seguridad: si ha seguido la guía hasta este punto, solo tiene que reemplazar el% UUID% con los SR como se obtuvo de arriba.
La ubicación de SendEmail - Si ha optado por habilitar el correo electrónico, debe ingresar el lugar donde extrajo el ejecutable de Perl aquí.
Detalles del correo electronico - Nuevamente, si ha habilitado el correo electrónico, debe definir detalles como: A, De, Nombre del servidor / IP y etc. '.
Compresión - Esto se establece en "No" de forma predeterminada, ya que al habilitarlo producirá un archivo de copia de seguridad más pequeño, también hará que el procedimiento de copia de seguridad se ejecute durante un período de tiempo considerablemente mayor..
Compruebe si hay espacio libre en el destino: esto hará que el script verifique que hacer la copia de seguridad de la máquina virtual no hará que el espacio libre de la ubicación de la copia de seguridad caiga por debajo de 10 GB. Esto se hace para garantizar que se realice una copia de seguridad de la mayor cantidad de máquinas virtuales en lugar de una máquina virtual muy grande. El cálculo se realiza utilizando el total de tamaño de disco bruto de todos los HD asociados con la VM.
Depuración - El valor predeterminado es tener la depuración desactivada con el valor "0" (cero). No debería tener que activar esto, pero si lo hace, se indicará más información en el segmento de solución de problemas..
Ejecución / Programación
En su forma más simple, una invocación de Xen-pocalypse sería:
./Xen-backup.sh settings.cfg weekly-fri
Donde en el caso anterior, estamos dentro del directorio que contiene el script y el archivo de configuración. La "etiqueta" que buscará el script es "semanal-fri".
Como se indicó anteriormente, usaremos Cron para programar la ejecución. Antes de entrar en la configuración, es muy recomendable que configure el paquete SSMTP ya instalado en su servidor Xen. Si bien este es un paso opcional, hacerlo te dará un colector de retrolavado. Tener un "colector de lavado a contracorriente" de ese tipo puede alertarle de cosas que el script no puede.
Entra en la edición de cron más mediante la emisión:
crontab -e
Si ha seguido las instrucciones anteriores y desea agregar una copia de seguridad programada para el viernes a las 18:01 (6:01 PM), ingrese lo siguiente:
01 18 * * viernes /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-fri
Lo anterior es correcto, asumiendo que su script y el archivo de configuración están bajo "/ root / Xen-pocalypse-master /".
Solución de problemas
Si bien he puesto mucho esfuerzo en hacer que el script sea tan fácil de usar y tan infalible como sea posible, "El mundo es un laboratorio más grande". La información a continuación puede ayudarlo a determinar cuál es la fuente de sus problemas..
Progreso
Es posible que desee utilizar este forro para "ver" rápidamente todas las tareas en curso, para ver si realmente están progresando o si están realmente atascados.
mientras que [-e / dev / null]; haga para VM en "$ (xe task-list | grep uuid | awk 'print $ 5')"; do xe task-param-get param-name = progress uuid = $ VM; sleep 1; hecho; hecho
Para dejar de mirar, use Ctrl + C para frenar el "bucle while".
Explotación florestal
Todo el "registro" es recopilado por el host Xen que ejecuta el script en el mecanismo de syslog. Esto por supuesto se puede ver con:
menos + F / var / log / messages
Usted está buscando la palabra clave "Xen-pocalypse".
Nota: Citrix ha establecido una política de retención de dos (2) días para el syslog de sus servidores. Es posible que desee tenerlo en cuenta para postmortems.
Depuración
Como se indica en el segmento del archivo de configuración, hay una directiva para habilitar la depuración. Al habilitar la depuración, el script generará un registro detallado en la consola y lo castigará al enviar correos electrónicos y realizar las exportaciones, a menos que también se establezcan los indicadores relevantes. Las posibles marcas se indican en la plantilla del archivo de configuración y le permiten definir de forma granular lo que desea depurar.
Espero que no haya necesitado ninguna depuración y que esté cosechando los frutos de mi trabajo :)
Empuje, mi hombre, estás a punto de convertirte en el número uno en el engaño ...