Búsqueda elástica

Copia de seguridad y restauración de clústeres de Elasticsearch con instantáneas

Copia de seguridad y restauración de clústeres de Elasticsearch con instantáneas
Elasticsearch se trata de datos y, como probablemente ya sepa, los datos son importantes para usted y para Elasticsearch. Sin embargo, en la medida en que tanto usted como Elasticsearch aman los datos, pueden ocurrir fallas en los datos, lo que lleva a la pérdida de datos.

Para ayudar a protegerse contra la pérdida de datos, Elasticsearch tiene varias características que le permiten garantizar la disponibilidad de los datos, incluso en casos de fallas de datos.

Algunas de las formas que usa Elasticsearch para brindarle disponibilidad de datos incluyen:

Este tutorial le muestra cómo crear instantáneas de clúster, que lo ayudarán a estar listo en caso de que ocurra 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 seguridad de un clúster de Elasticsearch en ejecución. Esta instantánea puede ser de un clúster completo o de índices y flujos de datos específicos dentro de un clúster en particular.

Como pronto aprenderá, un complemento de repositorio administra las instantáneas de Elasticsearch. Estas instantáneas se pueden almacenar 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 utilizan la API de instantáneas para realizar estas tareas.

Algunas de las tareas que maneja la API Snapshot 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 solicitud a continuación que crea un repositorio llamado backup_repo

PUT / _snapshot / backup_repo

"tipo": "fs",
"ajustes":
"ubicación": "/ inicio / raíz / copias de seguridad",
"comprimir": verdadero

Aquí hay un comando cURL para la solicitud anterior:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ inicio / raíz / copias de seguridad "," comprimir ": verdadero '

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 repo en elasticsearch.yml

El camino.La entrada del repositorio debe tener un aspecto similar a:

camino.repositorio: [“/ 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.repositorio, es posible que deba reiniciar los clústeres de Elasticsearch. Además, los valores admitidos para la ruta.el repositorio puede variar enormemente según la plataforma que ejecute 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 extremo _snapshot como:

GET / _snapshot / backup_repo

También puede utilizar el siguiente comando cURL:

curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo"

Esto debería mostrar información sobre el repositorio de respaldo, por ejemplo:


"backup_repo":
"tipo": "fs",
"ajustes" :
"comprimir": "verdadero",
"ubicación": "" "/ inicio / raíz / copias de seguridad" ""


Si tiene más de un repositorio de instantáneas y no recuerda el nombre, puede omitir el nombre del repositorio y llamar al extremo _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 API de creación de instantáneas gestiona la creación de una instantánea de Elasticsearch para un repositorio de instantáneas específico. La API requiere el nombre del repositorio de instantáneas y el nombre de la instantánea.

NOTA: Un único repositorio de instantáneas puede tener más de una instantánea de los mismos clústeres siempre que tengan identidades / nombres únicos.

Considere la siguiente solicitud para agregar una instantánea llamada snapshot_2021 al repositorio backup_repo.

PUT / _snapshot / backup_repo / snapshot_2021

Para 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


"aceptado": verdadero

Dado que no especifica qué flujos de datos e índices desea respaldar, llamar a la solicitud anterior respalda todos los datos y el estado del clúster. Para especificar qué flujos de datos e índices respaldar, agréguelo al cuerpo de la solicitud.

Considere la siguiente solicitud que respalda el .kibana index (un índice del sistema) y especifica qué usuario autorizó la instantánea y el motivo.

PUT / _snapshot / backup_repo / snapshot_2

"índices": ".kibana ",
"ignore_unavailable": verdadero,
"include_global_state": verdadero,
"metadatos":
"tomado_por": "elasticadmin",
"Take_because": "Copia de seguridad diaria"

El comando cURL para eso es:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Content-Type: application / json' -d '"índices": ".kibana "," ignore_unavailable ": verdadero," include_global_state ": verdadero," metadatos ": " tomado_por ":" elasticadmin "," tomado_porque ":" Copia de seguridad diaria " '

Ignore_unavailable establece un estado booleano que devuelve un error si faltan o se cierran los flujos de datos o índices especificados en la instantánea.

El parámetro include_global_state guarda el estado actual del clúster si es verdadero. Parte de la información del clúster guardada incluye:

NOTA: Puede especificar más de un índice separados por comas.

Un argumento común que se usa con el punto final _snapshot es wait_for_completion, un valor booleano que define si (verdadero) o no (falso) la solicitud debe regresar inmediatamente después de la inicialización de la instantánea (predeterminado) o esperar a que se complete la instantánea.

Por ejemplo:

PUT / _snapshot / backup_repo / snapshot_3?esperar_para_completar = verdadero

"índices": ".kibana ",
"ignore_unavailable": verdadero,
"include_global_state": falso,
"metadatos":
"tomado_por": "elasticadmin",
"Take_because": "Copia de seguridad semanal"

El comando cURL es:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Tipo de contenido: aplicación / json' -d '" índices ":".kibana "," ignore_unavailable ": verdadero," include_global_state ": falso," metadata ": " tomado_por ":" elasticadmin "," tomado_porque ":" Copia de seguridad semanal " '

Cuando tenga el parámetro wait_for_completion establecido en verdadero, dará un resultado similar al que se muestra a continuación:


"instantánea":
"instantánea": "instantánea_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"versión": "7.10.2 ",
"índices" : [
".kibana_1 "
],
"data_streams": [],
"include_global_state": falso,
"metadatos":
"tomado_por": "elasticadmin",
"Tomado_porque": "Copia de seguridad semanal"
,
"estado": "ÉXITO",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"fallos": [],
"fragmentos":
"total": 1,
"fallido": 0,
"exitoso": 1


Cómo ver instantáneas

La API de instantáneas GET maneja la funcionalidad de instantáneas de vista.

Todo lo que necesita para pasar 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 especificada. Estos detalles incluyen:

Por ejemplo, para ver los detalles sobre el snapshot_3 creado anteriormente, utilice la solicitud que se muestra a continuación:

GET / _snapshot / backup_repo / snapshot_3
Para usar cURL, use el siguiente comando:
[cc lang = "text" width = "100%" height = "100%" escaped = "true" theme = "blackboard" nowrap = "0"]
curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3"

La solicitud debe devolver una respuesta con los detalles de la instantánea como:


"instantáneas": [

"instantánea": "instantánea_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"versión": "7.10.2 ",
"índices" : [
".kibana_1 "
],
"data_streams": [],
"include_global_state": falso,
"metadatos":
"tomado_por": "elasticadmin",
"Take_because": "Copia de seguridad semanal"
,
"estado": "ÉXITO",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"fallos": [],
"fragmentos":
"total": 1,
"fallido": 0,
"exitoso": 1


]

También puede personalizar el cuerpo de la solicitud para obtener detalles específicos sobre una instantánea. Sin embargo, no lo analizaremos por ahora.

Supongamos que desea ver información sobre todas las instantáneas en un repositorio de instantáneas específico; 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:


"instantáneas": [

"instantánea": "instantánea_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"versión": "7.10.2 ",
"índices" : [
"my_index",
"single_index_with_body",
"my_index_2",
"single_index",
".kibana_1 ",
"prueba"
],
"data_streams": [],
"include_global_state": verdadero,
"estado": "ÉXITO",
"start_time": "2021-01-19T13: 28: 48.172Z ",
"start_time_in_millis": 1611062928172,
"end_time": "2021-01-19T13: 28: 50.831Z ",
"end_time_in_millis": 1611062930831,
"duration_in_millis": 2659,
"fallos": [],
"fragmentos":
"total": 7,
"fallido": 0,
"exitoso": 7

,

"instantánea": "instantánea_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"versión": "7.10.2 ",
"índices" : [
".kibana_1 "
],
"data_streams": [],
"include_global_state": falso,
"metadatos":
"tomado_por": "elasticadmin",
"take_because": "Copia de seguridad diaria"
,
"estado": "ÉXITO",
"start_time": "2021-01-19T13: 33: 34.482Z ",
"start_time_in_millis": 1611063214482,
"end_time": "2021-01-19T13: 33: 35.921Z ",
"end_time_in_millis": 1611063215921,
"duration_in_millis": 1439,
"fallos": [],
"fragmentos":
"total": 1,
"fallido": 0,
"exitoso": 1

,

"instantánea": "instantánea_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"versión": "7.10.2 ",
"índices" : [
".kibana_1 "
],
"data_streams": [],
"include_global_state": falso,
"metadatos":
"tomado_por": "elasticadmin",
"Take_because": "Copia de seguridad semanal"
,
"estado": "ÉXITO",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"fallos": [],
"fragmentos":
"total": 1,
"fallido": 0,
"exitoso": 1


]

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 DELETE como:

BORRAR / _snapshot / backup_repo / snapshot_2021 /

El comando cURL es:

curl -XDELETE "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /"

La respuesta debe reconocerse: verdadera


"Reconocido": verdadero

Si la instantánea no existe, obtendrá un código de estado 404 y un error de instantánea faltante como:


"error" :
"causa principal" : [

"tipo": "snapshot_missing_exception",
"motivo": "Falta [backup_repo: snapshot_2021]"

],
"tipo": "snapshot_missing_exception",
"motivo": "Falta [backup_repo: snapshot_2021]"
,
"estado": 404

Conclusión

En esta guía, hemos discutido cómo crear instantáneas de Elasticsearch usando la API de instantáneas. 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 realizar con la API, el conocimiento de esta guía debería ser suficiente para comenzar.

Gracias por leer.

Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....
SuperTuxKart para Linux
SuperTuxKart es un gran título diseñado para ofrecerte la experiencia Mario Kart de forma gratuita en tu sistema Linux. Es bastante desafiante y diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth es uno de los juegos de estrategia de código abierto más populares que puedes jugar en este momento. Este juego no solo ha esta...