Cómo realizar una copia de seguridad de un clúster de Elasticsearch
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 ser eficiente tomar instantáneas del clúster de forma regular.
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 realizar 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
- Cluster 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.
- Haz una copia de seguridad y restauración.
Verifique la configuración del cliente/servidor 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 “/inicio/ubuntu/compartido/” directorio con nodos de Elasticsearch.
Cada Elasticsearch tiene su directorio local “/inicio/ubuntu/montado” montado en el directorio compartido de NFS “/inicio/ubuntu/compartido/”. 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 separar la copia de seguridad del clúster de Elasticsearch 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 Node1
#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 Node3
#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.
Registre 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 usando 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.
Use el siguiente comando para realizar 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.
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.