Saltar al contenido principal

Copia de seguridad entre clústeres

Problema y propósito​

Una instantánea de disco reside en el mismo pool que la propia máquina virtual. Esta copia protege frente a un error dentro de la VM, pero no frente a la pérdida del pool o de su nodo propietario: el original y la copia se pierden a la vez. Para que una copia sobreviva a un fallo de la capa de almacenamiento, debe trasladarse a otro clúster.

De esto se encarga el subsistema de copia de seguridad entre clústeres. Un clúster envía el flujo de datos de la VM; el otro lo recibe y almacena su historial. Ambos extremos son clústeres normales de vStack Center; la configuración no tiene un servidor de copias de seguridad dedicado.

vStack Center proporciona para ello un conjunto de primitivas, en lugar de un producto completo de copias de seguridad. Un clúster puede crear una cadena, abrir un receptor de flujo, enviar un punto de restauración histórico y eliminar lo que ya no se necesita. El autor de la llamada (GI, la federación de clústeres) mantiene la programación, el catálogo de copias de seguridad y la política de retención. El propio clúster no programa nada ni lleva el historial de copias de seguridad.

Modelo y entidades​

Una cadena de copias de seguridad es un dataset de servicio en el clúster de almacenamiento de copias de seguridad. Su nombre completo consta del pool, un prefijo de servicio y un nombre de hoja: <pool>/.backup/<leaf>. El autor de la llamada elige el nombre de hoja, y el clúster valida sus caracteres: de 1 a 128 caracteres, formados por letras latinas, dígitos y los símbolos _, ., -. Los espacios, los caracteres cirílicos, las barras y @ se rechazan con el código -25430. El clúster no interpreta el significado del nombre. Una cadena no es una VM: no pertenece a ningún VDC (centro de datos virtual) y no aparece en las listas de VM.

Un punto de restauración es una instantánea dentro de una cadena. Se direcciona mediante su nombre corto, el sufijo después de @, y no mediante su ruta completa. Una cadena contiene tantos puntos como se le agreguen: el clúster no limita su número ni elimina automáticamente los antiguos.

El clúster selecciona por sí mismo el pool para la cadena, sin intervención del autor de la llamada. Considera los pools consumidores cuyos nodos propietarios están activos y selecciona el que tiene más espacio libre. Una estimación del tamaño de la copia de seguridad, si se proporciona al crearla, actúa como filtro previo. El clúster agrega a la estimación un margen del 20 % para el crecimiento de la cadena y excluye los pools con menos espacio libre que ese total. El filtro se habilita cuando la estimación es mayor que cero.

EntidadSe direcciona medianteQuién establece el nombre
Cadenaruta completa <pool>/.backup/<leaf>el autor de la llamada establece el nombre de hoja; el clúster selecciona el pool
Punto de restauraciónnombre corto de la instantánea (el sufijo después de @)la parte que escribió el flujo

La ruta de la cadena es la única protección frente a un acceso no deseado a la capa de almacenamiento: solo se retransmiten a los nodos las rutas con el formato <pool>/.backup/<leaf>. El clúster rechaza cualquier otra ruta con el error -25430 antes de que la solicitud llegue al nodo. Por lo tanto, intentar direccionar un dataset de VM mediante operaciones de cadena falla por diseño.

Roles de los clústeres​

En un procedimiento participan hasta tres clústeres, y un clúster puede desempeñar varios roles a la vez.

RolQué hace
Origenenvía el flujo de datos de su VM al receptor del clúster de almacenamiento de copias de seguridad
Almacenamiento de copias de seguridad (destino)contiene las cadenas, recibe flujos, envía datos históricos, rota las instantáneas y elimina cadenas
Restauraciónrecibe de vuelta el flujo y despliega una VM a partir de él

El rol de almacenamiento de copias de seguridad es el tema central de esta página. Es el único rol con cadenas: el origen conserva los datos en el dataset de la VM, y el clúster de restauración los conserva en un dataset de recepción en cuarentena.

Cómo funciona​

Los datos viajan directamente entre clústeres mediante TCP, y no a través del autor de la llamada. Esto determina el orden: primero el receptor, después el emisor. El clúster de almacenamiento de copias de seguridad abre un receptor para la cadena: asigna un puerto y devuelve los datos de conexión del receptor, es decir, la dirección del nodo propietario del pool y el número de puerto. El emisor se conecta a esa dirección y puerto y envía el flujo. El tiempo de espera de recepción especifica cuánto tiempo espera el receptor una conexión antes de cerrar el puerto.

Esta respuesta llega de inmediato y solo significa que la solicitud se ha enviado al nodo. Confirma que la solicitud se retransmitió, en lugar de informar del resultado de la transferencia.

Las operaciones se dividen en dos grupos según el modo de ejecución. Las operaciones síncronas devuelven su resultado de inmediato: se crea una cadena, se asigna un puerto o se elimina una instantánea. Una transferencia asíncrona devuelve una confirmación de retransmisión, y el resultado de la transferencia llega en una devolución de llamada (callback) desde el nodo.

OperaciónModoQué haceRespuesta
Crear una cadenasíncronocrea una cadena tras seleccionar un poolruta de la cadena, pool, dirección del nodo
Abrir un receptorsíncronoabre un receptor de flujo para la cadenadirección del nodo y puerto de recepción
Enviar un punto de restauraciónasíncronoenvía un punto de restauración a un receptor externoconfirmación de retransmisión; el resultado llega en una devolución de llamada
Eliminar un punto de restauraciónsíncronoelimina un punto de restauraciónconfirmación
Eliminar una cadenasíncronoelimina la cadena completaconfirmación

Ambas formas de eliminación son idempotentes: repetir una solicitud para un objeto que ya se ha eliminado no altera el estado ni requiere un tratamiento especial por parte del autor de la llamada.

Acceso y habilitación​

Las cinco operaciones del subsistema requieren el mismo privilegio: 14002, administración de cadenas de copias de seguridad. Su ámbito es el clúster: una cadena no está vinculada a un VDC, por lo que el rol de administrador de VDC no puede realizar estas solicitudes. El modelo de privilegios se describe en la referencia de roles y privilegios.

Además del privilegio, existe un interruptor a nivel de clúster: el parámetro feature.backup en cluster.options. Su valor predeterminado es 0, en cuyo caso cualquiera de las cinco operaciones devuelve el error -25420. Cada clúster tiene su propio interruptor: el subsistema puede estar habilitado en el clúster de almacenamiento de copias de seguridad y permanecer deshabilitado en los demás clústeres.

Alcance​

El subsistema se encarga de la transferencia y el almacenamiento de los datos, pero no de la administración de las copias de seguridad. Lo que no hace:

  • Mantener un catálogo. El subsistema no tiene operaciones para enumerar las cadenas de un clúster ni las instantáneas de una cadena. El autor de la llamada lleva los registros: guarde la ruta de la cadena devuelta al crearla, o no podrá volver a acceder a la cadena. El pool y la dirección del nodo de la misma respuesta son informativos: cambian cuando cambia la ubicación del pool, así que no confíe en ellos.
  • Programar operaciones. No hay programaciones ni políticas de retención a nivel de clúster. Un programador externo se encarga de la rotación eliminando uno a uno los puntos de restauración obsoletos.
  • Enviar incrementos. En la versión actual, las transferencias desde una cadena son siempre completas: las transferencias incrementales están reservadas y no funcionan.
  • Crear instantáneas durante una transferencia. Una transferencia envía un punto existente por su nombre. Si el punto necesario no está en la cadena, no se creará: la operación falla con un error.
  • Mostrar las cadenas en la interfaz. La interfaz web del clúster no tiene pantallas para las cadenas: el autor de la llamada administra las operaciones.

Véase también​

Métodos de la API​

Operaciones de la API tratadas en esta página: backup-dataset-create, backup-dataset-receive, backup-dataset-send, backup-snapshot-remove, backup-dataset-remove, vm-backup-send, vm-backup-restore; consulte la referencia de la API.