El mecanismo para realizar una copia de seguridad en Elasticsearch se llama Instantánea. Una instantánea es una copia de seguridad tomada de un clúster de Elasticsearch que se encuentra en ejecución. No es necesario desactivar el clúster, lo que ayuda a evitar 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 resultar eficaz tomar instantáneas del clúster periódicamente.
De la misma manera que podemos realizar 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 compartidos para el clúster, es necesario montar el mismo sistema de archivos compartidos en la misma ubicación en todos los nodos principales y de datos. Esta ubicación debe registrarse en el archivo de configuración en todos los nodos maestros y de datos.
En este artículo, verificaremos el repositorio compartido de NFS y veremos los pasos para tomar una instantánea y restaurarlo.
Requisitos previos
- Directorio compartido de NFS disponible y montado en los 3 nodos de Elasticsearch en la misma ubicación
- Clúster de Elasticsearch de 3 nodos en 3 servidores Ubuntu.
Lo que haremos
- Verifique la configuración del servidor NFS.
- Verificar la configuración del clúster de Elasticsearch
- Registre un repositorio para realizar copias de seguridad.
- Realice una copia de seguridad y restaure.
Verifique la configuración del servidor/cliente NFS.
En este artículo, no hablaremos sobre la configuración de NFS, ya que no entra dentro del alcance de este artículo. Pero para realizar una copia de seguridad de Elasticsearch, necesitaríamos 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/shared/” directorio con Nodos de Elasticsearch.
Cada Elasticsearch tiene su directorio local “/home/ubuntu/mounted” montado en el directorio compartido de NFS “/home/ubuntu/shared/” . Necesitamos asegurarnos de que la propiedad de todos los directorios pertenezca al mismo usuario con el que iniciaríamos Elasticsearch.
Una vez que tengamos esta configuración en su lugar, podemos continuar.
Verificar la configuración del clúster de Elasticsearch
Realice las siguientes configuraciones para configurar Elasticsearch para que funcione en modo Clúster:
Aquí, si ha configurado un clúster de Elasticsearch, debe tener en cuenta la siguiente configuración.
La única configuración que debemos realizar para tomar la copia de seguridad del clúster de Elasticsearch aparte de la configuración del clúster de Elasticsearch existente es "ruta.repo:["/home/ubuntu/mounted"] ":
vim config/elasticsearch.yml
path.repo: ["/home/ubuntu/mounted"]
Mantenga esto mismo 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 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 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"]
Una vez que tenga toda esta configuración en su lugar, inicie todos los nodos de Elasticsearch, primero inicie el maestro inicial.
Registrar un repositorio para realizar copias de seguridad
Verifique los repositorios existentes usando el siguiente comando.
curl -XGET 'http://IP_Of_Elasticsearch_Node_Or_Master:9200/_snapshot/_all?pretty=true'
Si recibimos una respuesta en blanco, indica que aún no tenemos ningún repositorio configurado
Para configurar un repositorio, ejecute 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í, "my_backup" en el comando anterior es el nombre del repositorio.
Podemos comprobar los repositorios registrados mediante 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
Hacer una copia de seguridad
Una vez que hayamos creado un repositorio, estamos listos para realizar una copia de seguridad.
Utilice el siguiente comando para realizar una copia de seguridad denominada "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.
Use el siguiente comando para restaurar la copia de seguridad llamada "snapshot_name"
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, vimos los pasos para registrar un repositorio y realizar una copia de seguridad y restaurarlo.