A partir de Apigee Hybrid 1.9, puedes crear una copia de seguridad de tus datos híbridos y restablecerlos mediante instantáneas de CSI (interfaz de almacenamiento de contenedores). La copia de seguridad CSI genera instantáneas de disco y las almacena como datos encriptados en el almacenamiento en la nube. La copia de seguridad de CSI no necesita un bucket de Google Cloud Storage ni un servidor remoto para almacenar datos de copia de seguridad.
Se recomienda la copia de seguridad de CSI para instancias de Hybrid alojadas en Google Cloud, AWS o Azure.
En esta página, se describen los pasos para usar la copia de seguridad y restablecimiento de CSI Hybrid. Para obtener una descripción general de las copias de seguridad y el restablecimiento de Hybrid en general, consulta la Descripción general de la copia de seguridad y restablecimiento de Cassandra.
Limitaciones de copias de seguridad y restablecimientos
Ten en cuenta estas limitaciones cuando uses la copia de seguridad y restablecimiento de CSI:
- El controlador de CSI que usa la clase de almacenamiento configurada debe admitir instantáneas de CSI. Consulta esta lista de controladores de CSI de Kubernetes para obtener información sobre los controladores.
- No todas las plataformas son compatibles. Solo se admiten las plataformas de Google Cloud, AWS y Azure.
- OpenShift Container Platform no es compatible debido a las limitaciones de instantáneas de volumen.
- Solo se admiten plataformas en la nube. Las plataformas locales no son compatibles.
- Los datos de la copia de seguridad de CSI y los datos de la copia de seguridad híbrida que no es de CSI no son compatibles. Las copias de seguridad que no son de CSI no se pueden usar con el restablecimiento de CSI y las copias de seguridad de CSI no se pueden usar con el restablecimiento que no es de CSI.
- La instalación y la funcionalidad del controlador de CSI es responsabilidad del proveedor del controlador de CSI.
- Los usuarios son responsables de garantizar que haya recursos adecuados del clúster disponibles para aprovisionar instantáneas de CSI.
- Los usuarios son responsables de quitar los datos de instantáneas anteriores.
Configura copias de seguridad de CSI
Para programar copias de seguridad Hybrid con CSI, sigue estos pasos:
- Si no configuraste una copia de seguridad Hybrid, haz lo siguiente:
- Ejecuta el siguiente comando de
create-service-account
para crear una cuenta de servicio de Google Cloud con el rol estándarroles/storage.objectAdmin
. Este rol de la cuenta de servicio te permite escribir datos de copia de seguridad en Cloud Storage. Ejecuta el siguiente comando en el directoriohybrid-base-directory/hybrid-files
: Con este comando, se crea una sola cuenta de servicio llamada./tools/create-service-account --env non-prod --dir ./service-accounts
apigee-non-prod
para usarla en entornos que no son de producción y se coloca el archivo de claves descargado en el directorio./service-accounts
. Para obtener más información sobre las cuentas de servicio de Google Cloud, consulta Crea y administra cuentas de servicio. - El comando
create-service-account
guarda un archivo JSON que contiene la clave privada de la cuenta de servicio. El archivo se guarda en el mismo directorio en el que se ejecuta el comando. Necesitarás la ruta a este archivo en los siguientes pasos.
- Ejecuta el siguiente comando de
- Abre el archivo
overrides.yaml
. Configura los siguientes parámetros, como se muestra en Ejemplo de archivos anulados.- Establece los parámetros generales que se muestran a continuación en el bloque
backup
. Si ya configuraste estos parámetros para la solución de copia de seguridad Hybrid que no es de CSI, puedes usar los mismos parámetros para tus instantáneas de CSI. Consulta la tabla de referencia de propiedades de copia de seguridad para obtener más información sobre cada valor.
Para
backup
:- enabled: Se configura como
true
para habilitar las copias de seguridad programadas. - pullPolicy en imagen: Se configura como
Always
. - serviceAccountPath: La ruta de acceso a la cuenta de servicio.
- schedule: Proporciona una programación de expresión cron.
- enabled: Se configura como
- Establece estos parámetros para la copia de seguridad específica de CSI:
- Valores de grupos de almacenamiento de Cassandra: La clase de almacenamiento de Cassandra configurada debe admitir instantáneas de CSI para que la copia de seguridad y restablecimiento de CSI funcione. Para verificar si una clase de almacenamiento admite instantáneas de CSI, ejecuta el siguiente comando para obtener las clases de almacenamiento disponibles:
Observa el resultado del “Aprovisionador” para cada clase de almacenamiento. Los aprovisionadores que usan CSI suelen tener una parte “.csi”. en su nombre, como "pd.csi.storage.gke.io". Busca el nombre del aprovisionador en esta lista del controlador de CSI de Kubernetes. Si la columna “Otras funciones” para el aprovisionador contiene la palabra “SNAPSHOT”, entonces la clase de almacenamiento que usa el aprovisionador admite instantáneas de CSI.kubectl get sc
Agrega estos parámetros al grupo de almacenamiento. Ambos valores son obligatorios.
- storageclass: un nombre de clase de almacenamiento habilitado para una instantánea de CSI.
- capacidad: la capacidad del disco.
- Tipo de proveedor de servicios en la nube:
Una vez que se haya verificado la función de la instantánea de CSI, modifica el archivo de anulaciones para usar la copia de seguridad y restablecimiento de CSI:
- cloudProvider: Configura
cloudProvider
enbackup
yrestore
enCSI
.
- cloudProvider: Configura
- Valores de grupos de almacenamiento de Cassandra: La clase de almacenamiento de Cassandra configurada debe admitir instantáneas de CSI para que la copia de seguridad y restablecimiento de CSI funcione. Para verificar si una clase de almacenamiento admite instantáneas de CSI, ejecuta el siguiente comando para obtener las clases de almacenamiento disponibles:
- Establece los parámetros generales que se muestran a continuación en el bloque
Ejemplo de configuración de copia de seguridad
En esta sección, se muestran las partes relacionadas con la copia de seguridad de un archivooverrides.yaml
de ejemplo.cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json" cloudProvider: "CSI" schedule: "0 * * 11 *"
Inicia una copia de seguridad manual
Las copias de seguridad de CSI se generan de forma automática según la programación cron establecida en el archivo overrides.yaml
.
Para iniciar una copia de seguridad manual de CSI, usa este comando:
kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name
backup-pod-name
es el nombre del Pod de copia de seguridad que se creará.
Verifica las copias de seguridad
Una forma de verificar que se creó una copia de seguridad con éxito es verificar las instantáneas de volumen en el clúster de Kubernetes con este comando:
kubectl get volumesnapshot -n apigee
En el resultado, se muestra la lista actual de instantáneas en el clúster. En el proceso de copia de seguridad de CSI, se crea una instantánea de cada disco de Cassandra. La cantidad de instantáneas generadas debe coincidir con la cantidad total de pods de Cassandra en el clúster.
Restablecer una copia de seguridad
Usa este proceso para restablecer una copia de seguridad de CSI generada con anterioridad. Para obtener información general sobre cómo restablecer copias de seguridad y una descripción general del proceso, consulta la página de descripción general de restablecimiento.
A fin de iniciar el restablecimiento de una copia de seguridad de CSI, sigue las instrucciones para el restablecimiento de región única híbrida que no es de CSI, pero usa estos valores en el bloque restore
de tu overrides.yaml
.
Consulta la tabla de referencia de propiedades de copia de seguridad para obtener más información sobre cada valor y la configuración de restablecimiento de ejemplo para ver un ejemplo.
- enabled: Se establece en
true
a fin de habilitar el restablecimiento de la copia de seguridad a la que se hace referencia con la marca de tiemposnapshotTimestamp
. - snapshotTimestamp: Proporciona la marca de tiempo de una copia de seguridad de CSI anterior.
- serviceAccountPath: La ruta de acceso a la cuenta de servicio.
- pullPolicy en imagen: Se configura como
Always
.
Si quieres encontrar el valor snapshotTimestamp
para restablecerlo, ejecuta este comando para obtener la lista de instantáneas disponibles:
kubectl get volumesnapshot -n apigee
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907
.
Ejemplo de configuración de restablecimiento
En esta sección, se muestran las partes relacionadas con el restablecimiento de un archivooverrides.yaml
de ejemplo.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json" cloudProvider: "CSI" image: pullPolicy: Always
Migra a la copia de seguridad y restablecimiento de CSI
Si no usaste la copia de seguridad Hybrid y el restablecimiento antes, puedes seguir las instrucciones en Configura copias de seguridad de CSI para crear copias de seguridad nuevas de CSI sin seguir los pasos de esta sección. Estos pasos te guiarán para migrar de una solución de copia de seguridad y restablecimiento que no es de CSI a copias de seguridad de CSI.
- Genera una copia de seguridad nueva mediante el método de copia de seguridad que no es de CSI configurado actualmente.
- Cambia la configuración de la copia de seguridad en el archivo Hybrid
overrides.yaml
para usar las anulaciones de copia de seguridad de CSI, como se muestra en la configuración de ejemplo de la copia de seguridad. - Aplica los cambios en el archivo
overrides.yaml
como sigue:
$APIGEECTL_HOME/apigeectl apply -f YOUR_OVERRIDES_FILE
- Verifica el trabajo de copia de seguridad:
kubectl get cronjob -n apigee
- Cuando se completa un trabajo de copia de seguridad, verifica que se hayan creado las instantáneas. La cantidad de instantáneas generadas debe ser equivalente a la cantidad de nodos de Cassandra en la instancia de Hybrid.
kubectl get volumesnapshot -n apigee