Cómo hacer una copia de seguridad de un clúster de Elasticsearch

El mecanismo de toma de copias de seguridad en Elasticsearch se llama Instantánea. Una instantánea es una copia de seguridad tomada de un clúster de Elasticsearch que está en estado de ejecución. No es necesario desmontar el clúster, lo que ayuda a evitar las ventanas de mantenimiento de las aplicaciones. Se puede tomar una instantánea de un índice individual o de todo el clúster y almacenarla en un repositorio en un sistema de archivos compartido.

Las instantáneas en Elasticsearch se toman de forma incremental. Esto significa que cuando crea una instantánea de un índice, Elasticsearch evita copiar cualquier dato que ya esté almacenado como parte de una instantánea anterior del mismo índice. Por lo tanto, puede ser eficiente tomar instantáneas del clúster de forma regular.

Del mismo modo que podemos hacer una copia de seguridad del clúster en estado de ejecución, también podemos restaurar una instantánea en un clúster en ejecución. Cuando restauramos un índice, podemos incluso modificar el nombre del índice restaurado, así como algunas de sus configuraciones.

Para hacer copias de seguridad, debemos registrar un repositorio de instantáneas antes de poder realizar las operaciones de instantánea y restauración. Para registrar el repositorio del sistema de archivos compartido para el clúster, es necesario montar el mismo sistema de archivos compartido en la misma ubicación en todos los nodos maestros y de datos. Esta ubicación debe estar registrada en el archivo de configuración en todos los nodos maestro y de datos.

En este artículo, verificaremos el repositorio compartido NFS, y veremos los pasos para tomar una instantánea y restaurarla.

Requisitos previos

  1. Directorio compartido NFS disponible y montado en los 3 nodos de Elasticsearch en la misma ubicación
  2. Cluster de Elasticsearch de 3 Nodos en 3 servidores Ubuntu.

Qué vamos a hacer

  1. Verificar la configuración del servidor NFS.
  2. Verificar la configuración del Cluster de Elasticsearch
  3. Registrar un Repositorio para tomar copias de seguridad.
  4. Hacer una copia de seguridad y restaurar.

Verificar la configuración del servidor/cliente NFS.

En este artículo no hablaremos de la configuración NFS ya que no entra en el ámbito de este artículo. Pero para hacer una copia de seguridad de Elasticsearch necesitaremos la siguiente configuración.

es-node-1(10.11.10.61)  : NFS Client
es-node-2(10.11.10.62) : NFS Client
es-node-3(10.11.10.63) : NFS Client
NFS Server(10.11.10.64) : NFS Server

Aquí,

El servidor NFS ha compartido su «/home/ubuntu/compartido/» con los nodos de Elasticsearch.

Cada Elasticsearch tiene su directorio local «/home/ubuntu/mounted» montado en el directorio compartido de NFS «/home/ubuntu/compartido/». Tenemos que asegurarnos de que la propiedad de todos los directorios pertenece al mismo usuario con el que iniciaríamos Elasticsearch.

Una vez que tenemos esta configuración, podemos seguir adelante.

Verificar la configuración del clúster de Elasticsearch

Realiza las siguientes configuraciones para que Elasticsearch funcione en modo Clúster:

Aquí, si has configurado un cluster de Elasticsearch debes tener en cuenta la siguiente configuración

La única configuración que tenemos que hacer para tomar la copia de seguridad del clúster de Elasticsearch aparte de la configuración existente del clúster de Elasticsearch es «ruta.repo: [«/home/ubuntu/mounted»]«:

vim config/elasticsearch.yml
path.repo: ["/home/ubuntu/mounted"] 

Mantén esto igual en cada nodo.

Configuración en el Nodo1

#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-1"
#define node 1 as master-eligible:
node.master: true
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.10.61
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"]
cluster.initial_master_nodes:
- 10.11.10.61
path.repo: ["/home/ubuntu/mounted"]

Configuración en el Nodo2

#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-2"
#define node 2 as master-eligible:
node.master: false
#define nodes 2 and 3 as data nodes:
node.data: true 
#enter the private IP and port of your node:
network.host: 10.11.10.62
http.port: 9200 
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.61", "10.11.10.62", "10.11.10.63"
path.repo: ["/home/ubuntu/mounted"]

Configuración en el Nodo3

#give your cluster a name.
cluster.name: my-cluster
#give your nodes a name (change node number from node to node).
node.name: "es-node-3"
#define node 3 as master-eligible:
node.master: false
#define nodes 2 and 3 as data nodes:
node.data: true
#enter the private IP and port of your node:
network.host: 10.11.10.63
http.port: 9200
#detail the private IPs of your nodes:
discovery.zen.ping.unicast.hosts: ["10.11.10.61","10.11.10.62","10.11.10.63""]
path.repo: ["/home/ubuntu/mounted"]

Copia de seguridad del clúster de Elasticsearch

Una vez que tengas toda esta configuración, inicia todos los nodos de Elasticsearch, empezando primero por el maestro inicial.

Registra un Repositorio para hacer copias de seguridad

Comprueba los repositorios existentes utilizando el siguiente comando.

curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'

Si obtenemos una respuesta en blanco, indica que aún no tenemos ningún repositorio configurado

Para configurar un repositorio ejecuta el siguiente comando.

curl -XPUT 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup' -d {
"type": "fs",
"settings": {
"location": "/home/ubuntu/mounted",
"compress": true
}
}'

Aquí, «mi_reserva» en el comando anterior es el nombre del repositorio.

Podemos comprobar los repositorios registrados con el siguiente comando

curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'

Copia de seguridad y restauración de un clúster de Elasticsearch

Haz una copia de seguridad

Una vez que hemos creado un repositorio, estamos preparados para hacer una copia de seguridad.

Utiliza el siguiente comando para hacer una copia de seguridad llamada «snapshot_name».

curl -XPUT "https://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name?wait_for_completion=true"

Restaurar una copia de seguridad

La instantánea que hemos tomado se puede restaurar con el siguiente comando.

Utiliza el siguiente comando para restaurar la copia de seguridad llamada «nombre_de_la_instantánea»

curl -XPOST "http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/my_backup/snapshot_name/_restore?wait_for_completion=true"

Conclusión

En este artículo hemos visto los pasos para registrar un repositorio y hacer una copia de seguridad y restaurarla.

También te podría gustar...