Skip to main content
Skip to content

Configuración de instantáneas de Elasticsearch

Puede configurar tu instancia de GitHub Enterprise Server para usar un proveedor de almacenamiento en la nube administrado por el cliente para las instantáneas y restauraciones nativas de Elasticsearch, en lugar de copiar datos de índice de búsqueda directamente desde el disco.

¿Quién puede utilizar esta característica?

Site administrators can configure Elasticsearch snapshot storage.

Acerca de las instantáneas de Elasticsearch

De forma predeterminada, GitHub Enterprise Server Backup Utilities y GitHub Enterprise Server Backup Service realice una copia de seguridad de los datos del índice de búsqueda copiando archivos directamente desde el disco. Este enfoque no sigue las propias recomendaciones de Elasticsearch, puede consumir una gran cantidad de almacenamiento del dispositivo de copia de seguridad y conlleva cierto riesgo de dañar los índices de copia de seguridad.

Como alternativa opcional, tu instancia de GitHub Enterprise Server admite la funcionalidad integrada de instantáneas incrementales y restauración de Elasticsearch. Al configurar un proveedor de almacenamiento en la nube compatible y habilitar la estrategia de copia de seguridad de instantáneas:

  • ghe-backup crea una instantánea incremental de los datos de su índice de búsqueda en su cuenta de almacenamiento en la nube configurada. Las instantáneas incrementales son más rápidas que una copia completa, especialmente en las copias de seguridad posteriores.
  • ghe-restore restaura los datos del índice de búsqueda desde su cuenta de almacenamiento en la nube, si existe una instantánea que coincida con la versión de la instancia de destino de GitHub Enterprise Server.
  • Las instantáneas están aisladas para cada versión de parche GitHub Enterprise Server, lo que permite reversiones más seguras entre versiones.

Esta característica es opcional. Si no configura un repositorio de instantáneas, tu instancia de GitHub Enterprise Server continúa realizando una copia de seguridad de los datos del índice de búsqueda mediante el método basado en disco existente.

Prerequisites

  • Un proveedor de almacenamiento en la nube compatible: Azure Blob Storage, Amazon S3 o Google Cloud Storage (o un servicio compatible con una de estas API).
  • El contenedor de almacenamiento o el cubo que planea usar como repositorio de instantáneas. Debe crear este contenedor o depósito usted mismo. GitHub Enterprise Server no lo crea automáticamente y se producirá un error en el registro del repositorio si el contenedor o el cubo aún no existen.

Configuración de un proveedor de almacenamiento de instantáneas

Configure los valores siguientes mediante ghe-config a través de SSH. Para obtener más información, vea Acceder al shell administrativo (SSH).

Aplicará la configuración para registrar el repositorio de instantáneas con Elasticsearch. El repositorio se llama search_index_snapshots-VERSION, donde VERSION es la versión actual de GitHub Enterprise Server.

almacenamiento de blobs de Azure

  1. Establezca los secretos siguientes:

    ghe-config secrets.elasticsearch.snapshot-provider azure
    ghe-config secrets.elasticsearch.snapshot.azure.container YOUR-CONTAINER
    ghe-config secrets.elasticsearch.snapshot.azure.account-name YOUR-STORAGE-ACCOUNT
    ghe-config secrets.elasticsearch.snapshot.azure.account-key YOUR-ACCOUNT-KEY
    

    Opcionalmente, establezca un sufijo de punto de conexión de blob personalizado (el valor predeterminado es core.windows.net):

    ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX
    
  2. Se aplica la configuración de ejecución.

    ghe-config-apply
    

Amazon S3

  1. Establezca los secretos siguientes:

    ghe-config secrets.elasticsearch.snapshot-provider s3
    ghe-config secrets.elasticsearch.snapshot.bucket-name YOUR-BUCKET-NAME
    ghe-config secrets.elasticsearch.snapshot.service-url YOUR-SERVICE-URL
    ghe-config secrets.elasticsearch.snapshot.region YOUR-AWS-REGION
    ghe-config secrets.elasticsearch.snapshot.access-key-id YOUR-ACCESS-KEY-ID
    ghe-config secrets.elasticsearch.snapshot.access-secret YOUR-ACCESS-SECRET
    

    Para la dirección URL del servicio, use el punto de conexión S3, por ejemplo https://s3.us-east-1.amazonaws.com.

  2. Se aplica la configuración de ejecución.

    ghe-config-apply
    

Google Cloud Storage

  1. Cree una clave de cuenta de servicio en formato JSON con acceso a su cubo y, a continuación, codifíquela como base64.

    base64 -w0 service-account.json
    
  2. Establezca los secretos siguientes:

    ghe-config secrets.elasticsearch.snapshot-provider gcs
    ghe-config secrets.elasticsearch.snapshot.gcs.bucket YOUR-BUCKET-NAME
    ghe-config secrets.elasticsearch.snapshot.gcs.credentials YOUR-BASE64-ENCODED-CREDENTIALS
    
  3. Se aplica la configuración de ejecución.

    ghe-config-apply
    

Comprobación del registro

Una vez completada la configuración, confirme que se registró el repositorio de instantáneas.

curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"

Si falta un secreto necesario, se produce un error en la configuración al registrar el repositorio. Actualice los secretos y vuelva a ejecutar ghe-config-apply para reintentar.

Habilitación de instantáneas durante la copia de seguridad y restauración

Configurar un proveedor de almacenamiento registra el repositorio de instantáneas, pero también debe habilitar la estrategia de copia de seguridad de instantáneas para que ghe-restore y ghe-backup la utilicen automáticamente.

  • GitHub Enterprise Server Backup Service: establezca la estrategia mediante ghe-config en el dispositivo.

    ghe-config backup.es-backup-strategy snapshot
    
  • GitHub Enterprise Server Backup Utilities: Configure la estrategia en su archivo backup.config en el host de copia de seguridad.

    GHE_ES_BACKUP_STRATEGY=snapshot
    

    El valor predeterminado es rsync, que conserva el comportamiento de copia de seguridad basado en disco existente. GitHub Enterprise Server Backup Utilities almacena solo los metadatos de instantánea localmente; el contenido de la instantánea permanece en el almacenamiento en la nube configurado.

Si no establece una estrategia de copia de seguridad, el repositorio de instantáneas todavía se puede administrar manualmente, pero ghe-backup``ghe-restore seguirá usando el método basado en disco.

Gestionar instantáneas manualmente

Puede administrar instantáneas de Elasticsearch directamente mediante los siguientes comandos. Ejecute cualquier comando con la -h marca para obtener información de uso.

ComandoDescripción
ghe-es-create-snapshotCrea una nueva instantánea en el repositorio configurado.
ghe-es-list-snapshotsEnumera los repositorios de instantáneas o las instantáneas dentro de un repositorio.
ghe-es-restore-snapshotRestaura los índices de búsqueda a partir de una instantánea.

Sugerencia

Para las copias de seguridad y restauraciones rutinarias, use GitHub Enterprise Server Backup Utilities o GitHub Enterprise Server Backup Service en lugar de estos comandos directamente. Las herramientas de copia de seguridad coordinan las instantáneas de Elasticsearch con el resto de los datos de la instancia para garantizar una copia de seguridad o restauración coherentes. Use los comandos manuales solo cuando necesite administrar instantáneas de índice de búsqueda independientemente de una copia de seguridad o restauración de instancias completas.

Restauración de una instantánea a partir de una versión anterior

Puede restaurar una instantánea creada por una versión anterior GitHub Enterprise Server a una versión posterior. No se puede restaurar una instantánea de una versión posterior a una versión anterior.

  1. Enumere las instantáneas disponibles para la versión anterior.

    ghe-es-list-snapshots -v 3.14.0
    
  2. Restaure la instantánea que desee.

    ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
    

Elasticsearch actualiza automáticamente los índices restaurados al formato de la versión actual.

Administración del almacenamiento de instantáneas

Las instantáneas de Elasticsearch son incrementales, pero la cuenta de almacenamiento en la nube todavía puede acumular instantáneas antiguas a lo largo del tiempo. Para evitar el crecimiento ilimitado del almacenamiento, configure una política de ciclo de vida con su proveedor de almacenamiento para eliminar automáticamente las instantáneas que superen el período de retención establecido. Para obtener más información, consulte la documentación del proveedor: