Backup cluster ElasticSearch 5.6 usando snapshots y rotación

Backup con snapshots y rotacion

Como en todo sistema de información, hay que tener una estrategia de copias de seguridad (backups) o mejor aún, tener dos. Si tienes un cluster de ElasticSearch, en producción, tienes que asegurarte un buen sistema de backups, y la mejor forma de hacer uno de ellos es usando la capacidad de ElasticSearch de generar copias de seguridad usando snapshots con rotación

Para este tip, usaremos la versión 5.6 de ElsaticSearch que es la que estoy usando con un cliente, con 3 máquinas en el cluster, aunque es valido para elasticsearch en la versión 6. Los matices entre versiones son necesario revisarlos, y por tanto el lector debe entender que esto, es un tip y que no me responsabilizo de su eficiacia. Cada administrador debe trabajar, ejecutar y verificar sus sistemasAbdelkarim Mateos

Configuración del sistema de backup basado en NFS

Lo primero es leerse la documentación de ElasticSearch respecto del trabajo con snapshots, para poder comprender y actuar creando nuestra estrategia de copias de seguridad. Es importante entender también, como funciona ElasticSearch con su sistema de versiones, sino queremos tener más de un quebradero de cabeza.

Escenario

  • [VARIABLE]: El contenido entre los corchetes debe ser sustituido por los valores adecuados de sus sistema
  • Punto de montaje local NFS: [PATH_PUNTO_MONTAJE]/[DIRECTORIO]/ (esto es aconsejado por si el punto de montaje va a tener más directorios de backups)
  • Punto de montaje remoto NFS:  [NFSERVER]:[PATH]
  • Nombre de mi estrategia de backups: [NOMBRE_BACKUP]

Montaje del punto local de nfs

Entendemos que el servidor NFS esta preparado para ser usado por cada uno de los elementos de nuestros cluster para el punto de montaje remoto, y por tanto podemos montarlo. En este punto, se entiende que ya tienes operativo un servidor NFS, configurado un punto de montaje remoto NFS valido para los elementos del cluster.

Editamos el fichero /etc/fstab en cada elemento del cluster
Montamos el directorio en cada uno de los miembros del cluster y verificamos

Configuración de ElasticSearch

Para que ElasticSearch funcione con este sistema, debemos también configurar todos los nodos del cluster editando el fichero de configuración /etc/elasticsearch/elasticsearch.yml y reiniciamos ES en cada uno de los elementos del cluster.

Activación del punto de montaje en ElasticSearch

Backup manual

Antes de abordar el sistema de backups con snapshots y rotación, vamos a comprender como funciona, y trabajar con algunos comandos que pueden ser de utilidad, pues a veces lo que queremos es un simple backup, para por ejemplo clonar nuestro cluster en desarrollo, etc.

Comprobamos

Información
En el manual tenemos más valores que podemos ajustar, y que debemos tener en cuenta, cuando nuestro cluster es un juguete de varios decenas de terabytes, sino queremos tener problemas

Crear un backup del cluster

Sin entrar en estrategias de rotación, queremos crear nuestro primer backup del cluster. Sencillo. Le vamos a llamar copia_completa

El comando devolverá el resultado en un json, que nos permitirá conocer el estado del snapshot.

Estrategia de backups con rotación

En una primera instancia programé un sistema para rotar los backups, muy sencilla basándome en los comandos anteriores y apoyándome en jq, un preprocesador de ficheros json. Pero luego pensé en que sería mejor trabajar con Curator, que es una herramienta basada en Python, que contiene más herramientas necesarias en la gestión de los índices, pero como en tantas cosas de ElasticSearch, la documentación es una verdadero quebradero de cabeza, y lo que existe en Internet sobre el tema, es igual que siempre: las diferencias de versiones crean un batiburrillo de información de mala calidad. Asi que lo dejamos para otro artículo.

Snapshots sin Curator

Para una salida rápida modifique y verifique un script de Karel Bemelmans que mantengo en mi GitLab. Es importante entender que este script no hace comprobaciones, sobre el resultado del backup o del borrado. Sin ellos, pudiera ser que estemos realizando un backup que no sirve en caso de ser necesario.

El script puede ser ejecutado en la consola shell o en una tarea cron, y esta configurado para guardar las últimas 30 copias.

 

Backup: algo más que ejecutarlos
Una de las fallas más comunes de las estrategias de copias de seguridad, es la ausencia de la verificación de las acciones realizadas por el software de backup, y la otra es la no verificación de que los datos asegurados por la copia son validos para restaurar los datos. Esta última, incluye el norealizafr simulaciones de restauración, que nos permitan conocer tanto la validez de la copia, así como los procedimientos a seguir en caso de desastre, para optimizar al máximo los tiempos de recuperación

Restaurar un snapshot

Obtener la lista de los snapshots disponibles

Script para restaurar

Te dejo un pequeño script para restaurar. Recuerda al leerlo, que primero hay que cerrar el indice, si este existe. Si no existe te dará error el cerrarlo pero no es importante.

Curator — 25/07/2018
Al finalizar el artículo casi tenía el apartado correspondiente a Curator, pero una vez más la documentación es muy confusa, y la gran mayoría de los artículos están basado en Curator 5.4 o anterior, o son los típicos Copy & Paste que no funcionan, o bien la persona que los hizo no expreso bien su experiencia. Aun así, he dejado un borrador del tema, para ir investigando a ver si en estos días puedo finalizarlo.

Una versión actualizada de los script la encontraras en mi GitLab personal

Buscando algo más
Auqne tengo mii propio trabajo, por mi edad, mis conocimientos, y mis capacidades, creo que aun puedo encontrar algo mejor. Si tienes alguna propuesta, escribeme

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax