Para ayudar a salvaguardar contra la pérdida de datos, ElasticSearch tiene varias características que le permiten garantizar la disponibilidad de datos, incluso en instancias de falla de datos.
Algunas de las formas en que Elasticsearch utiliza para proporcionarle disponibilidad de datos incluyen:
Este tutorial le muestra cómo crear instantáneas de clúster, lo que lo ayudará a estar listo si ocurre un evento de falla de datos irreversible.
Empecemos.
¿Qué es una instantánea de elasticsearch??
Como se mencionó, una instantánea elástica es una copia de copia de seguridad de un clúster de Elasticsearch en ejecución. Esta instantánea puede ser de un clúster completo o índices y flujos de datos específicos dentro de un clúster particular.
Como pronto aprenderá, un complemento de repositorio gestiona las instantáneas de Elasticsearch. Estas instantáneas son almacenables en varias ubicaciones de almacenamiento definidas por el complemento. Estos incluyen sistemas locales y sistemas remotos como GCP Storage, Amazon EC2, Microsoft Azure y muchos más.
Cómo crear un repositorio de instantáneas de ElasticSearch
Antes de sumergirnos en la creación de instantáneas de ElasticSearch, necesitamos crear un repositorio de instantáneas porque muchos de los servicios de Elasticsearch usan la API de instantáneas para realizar estas tareas.
Algunas de las tareas manejadas por la API de la instantánea son:
Para crear un repositorio de instantáneas, usamos el punto final de la API _SNAPSHOT seguido del nombre que queremos asignar al repositorio de instantáneas. Considere la siguiente solicitud que crea un repositorio llamado backup_repo
Poner /_snapshot /backup_repoAquí hay un comando curl para la solicitud anterior:
curl -xput "http: // localhost: 9200/_snapshot/backup_repo" -h 'content -type: application/json' -d '"type": "fs", "configuración": "ubicación": "/////" Inicio/Root/Backups "," Compress ": True 'Para pasar la ruta del repositorio de instantáneas, primero debe agregar la ruta del sistema o el directorio principal a la ruta.Entrada de repositorio en Elasticsearch.YML
El camino.La entrada de repo debe parecer similar a:
camino.Repo: [“/home/root/backups”]Puede encontrar el archivo de configuración de ElasticSearch ubicado en/etc/elasticsearch/elasticsearch.YML
NOTA: Después de agregar la ruta.Repo, es posible que deba reiniciar los grupos de Elasticsearch. Además, los valores admitidos para la ruta.El repositorio puede variar enormemente dependiendo de la plataforma que ejecuta ElasticSearch.
Cómo ver el repositorio de instantáneas
Para confirmar la creación exitosa del repositorio de instantáneas, use la solicitud GET con el punto final _SNAPSHOT como:
Get /_snapshot /backup_repoTambién puede usar el siguiente comando curl:
curl -xget "http: // localhost: 9200/_snapshot/backup_repo"Esto debería mostrar información sobre el repositorio de copia de seguridad, por ejemplo:
Si tiene más de un repositorios de instantáneas y no recuerda el nombre, puede omitir el nombre del repositorio y llamar al punto final _SNAPSHOT para enumerar todos los repositorios existentes.
Get/_snapshot o curl curl -xget http: // localhost: 9200/_snapshot
Cómo crear una instantánea de ElasticSearch
La creación de una instantánea de ElasticSearch para un repositorio de instantáneas específico es manejado por la API Crear instantánea. La API requiere el nombre del repositorio de instantáneas y el nombre de la instantánea.
NOTA: Un solo repositorio de instantáneas puede tener más de una instantánea de los mismos grupos siempre que tengan identidades/nombres únicos.
Considere la siguiente solicitud para agregar una instantánea llamada SnapShot_2021 al repositorio de Backup_Repo.
Poner/_snapshot/backup_repo/snapshot_2021Para usar curl, use el comando:
curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021"El comando debe devolver una respuesta de ElasticSearch con 200 OK y aceptado: Verdadero
Dado que no especifica qué flujos de datos e índices desea tener una copia de seguridad, llamando a las copias de seguridad de la solicitud anterior todos los datos y el estado del clúster. Para especificar qué fluidos de datos e índices retroceden, agregue eso al cuerpo de solicitudes.
Considere la siguiente solicitud que las copias de seguridad del .Índice de kibana (un índice de sistema) y especifica qué usuario autorizó la instantánea y la razón.
Poner/_snapshot/backup_repo/snapshot_2El comando curl para eso es:
curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2" -h 'content -type: aplicación/json' -d '"indices": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadatos ": " tomado_by ":" elasticadmin "," tomado_because ":" copia de seguridad diaria " 'Ignore_Unavailable establece un estado booleano que devuelve un error si algún flujo de datos o índices especificados en la instantánea faltan o se cerran.
El parámetro incluir_global_state guarda el estado actual del clúster si es verdadero. Parte de la información guardada en el clúster incluye:
NOTA: Puede especificar más de un índices separados por comas.
Un argumento común utilizado con el punto final _snapshot es Wait_For_Completion, un valor booleano que define si (Verdadero) o no (falso) la solicitud debe volver inmediatamente después de la inicialización de la instantánea (predeterminado) o esperar una finalización de una instantánea.
Por ejemplo:
Poner/_snapshot/backup_repo/snapshot_3?Wait_for_completion = TrueEl comando curl es:
curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_3?Wait_for_completion = true "-h 'Content -type: Application/JSON' -D '" INDICES ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metadatos ": " tomado_by ":" elasticadmin "," tomado_because ":" copia de seguridad semanal " 'Cuando tenga el parámetro Wait_For_Completion configurado en True, dará una salida similar a la que se muestra a continuación:
Cómo ver las instantáneas
La API GET Snapshot maneja la funcionalidad de las instantáneas de la vista.
Todo lo que necesita pasar en la solicitud es el repositorio de instantáneas y el nombre de la instantánea que desea ver los detalles.
La instantánea debe responder con detalles sobre una instantánea específica. Estos detalles incluyen:
Por ejemplo, para ver los detalles sobre el snapshot_3 creado anteriormente, use la solicitud que se muestra a continuación:
Get/_snapshot/backup_repo/snapshot_3La solicitud debe devolver una respuesta con los detalles de la instantánea como:
También puede personalizar el cuerpo de solicitud para obtener detalles específicos sobre una instantánea. Sin embargo, no veremos eso por ahora.
Digamos que desea ver información sobre todas las instantáneas en un repositorio de instantáneas específicos; En ese caso, puede pasar un comodín de asterisco en la solicitud como:
Get/_snapshot/backup_repo/*El comando curl para eso es:
curl -xget "http: // localhost: 9200/_snapshot/backup_repo/*"La respuesta es un volcado detallado de todas las instantáneas en ese repositorio como:
Los comodines son muy útiles para filtrar información específica sobre las instantáneas.
Cómo eliminar una instantánea
Eliminar una instantánea es muy simple: todo lo que tiene que hacer es usar la solicitud Eliminar como:
Eliminar/_snapshot/backup_repo/snapshot_2021/El comando curl es:
curl -xdelete "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021/"La respuesta debe ser reconocida: verdadera
Si la instantánea no existe, obtendrá un código de estado 404 y un error de falta de instantánea como:
Conclusión
En esta guía, hemos discutido cómo crear instantáneas de ElasticSearch utilizando la API de instantánea. Lo que ha aprendido debería ser suficiente para permitirle crear un repositorio de instantáneas, ver los repositorios de instantáneas, crear, ver y eliminar instantáneas. Aunque hay personalizaciones que puede hacer con la API, el conocimiento en esta guía debería ser suficiente para comenzar.
Gracias por leer.