Migración de OpenSearch entre Servidores
Introducción
Este tema tiene como función el servir de guía para realizar una migración de un servidor OpenSearch a otro OpenSearch, de la manera más eficiente y sencilla posible, copiando absolutamente todo lo que hubiera en el servidor origen para ser importado en el servidor destino.
Puntos importantes:
- Se indican credenciales por defecto aplicadas en la instalación automatizada mediante script de instalación online de OpenSearch para Pandora FMS (
admin:P4nd0r4!FMS). - El nombre dado al snapshot en la guía es
migration, se puede indicar cualquier otro para mejor identificación si fuera necesario.
Pasos a seguir
Requisitos previos
Se deben declarar las carpetas de backups de OpenSearch en los servidores.
En el archivo /etc/opensearch/opensearch.yml, en ambos servidores, añadir esta línea:
path.repo: ["/var/backups/opensearch"]
Reiniciamos el servicio OpenSearch en ambos servidores con la siguiente instrucción:
sudo systemctl restart opensearch
Fase 1
En el servidor de origen preparamos la carpeta y permisos para alojar el backup:
sudo mkdir -p /var/backups/opensearch sudo rm -rf /var/backups/opensearch/* sudo chown -R opensearch:opensearch /var/backups/opensearch/ sudo chmod -R 775 /var/backups/opensearch/
Se ejecuta un comando rm por seguridad, por si existiera previamente (por cualquier motivo) y se inicia el proceso con un directorio limpio.
Registramos el repositorio en OpenSearch. Si hubiera uno previamente creado, se borra y se crea de nuevo:
# Just in case, we’ll delete the old record from the memory curl \ -X DELETE \ "https://localhost:9200/_snapshot/migration" -u 'admin:P4nd0r4!FMS' \ -k # We checked out the repository into the local folder curl \ -X PUT \ "https://localhost:9200/_snapshot/migration" \ -u 'admin:P4nd0r4!FMS' \ -k \ -H "Content-Type: application/json" \ -d '{ "type": "fs", "settings": { "location": "/var/backups/opensearch", "compress": true } }'
En este caso, el repositorio se llama migration, como se ha indicado al principio del documento.
Se genera ahora el snapshot con todo:
curl \ -X PUT \ "https://localhost:9200/_snapshot/migration/migration?wait_for_completion=true" \ -u 'admin:P4nd0r4!FMS' \ -k \ -H "Content-Type: application/json" \ -d '{ "indices": "*", "include_global_state": true }'
Como se indica wait_for_completion=true la terminal quedará detenida y bloqueada hasta que termine.
Al finalizar se pueden comprimir los ficheros obtenidos y enviarlos al servidor destino:
# 1. Check actual size sudo du -sh /var/backups/opensearch/ # 2. Compress into /tmp sudo tar -czvf /tmp/opensearch_migration.tar.gz -C /var/backups/opensearch . # 3. Send to the destination server (replace ‘user’ and the Target Server IP address) scp /tmp/opensearch_migration.tar.gz user@TARGET_SERVER_IP_ADDRESS:/tmp/
En su defecto se puede usar cualquier otro protocolo de transferencia de ficheros de preferencia.
Fase 2
Si se tiene Pandora FMS en ejecución y conectado con el OpenSearch de destino, este debe ser detenido:
sudo systemctl stop pandora_server
A continuación se debe descomprimir el backup y aplicar los permisos adecuados. Si ya se tuviera algo en la carpeta de backups de OpenSearch en el servidor destino (por la razón que sea), primero hay que borrar ese contenido:
sudo mkdir -p /var/backups/opensearch sudo rm -rf /var/backups/opensearch/* # Erase, just in case sudo tar -xzvf /tmp/opensearch_migration.tar.gz -C /var/backups/opensearch/ sudo chown -R opensearch:opensearch /var/backups/opensearch/ sudo chmod -R 755 /var/backups/opensearch/
A continuación registraremos el repositorio en el servidor OpenSearch destino:
curl \ -X PUT \ "https://localhost:9200/_snapshot/migration" \ -u 'admin:P4nd0r4!FMS' \ -k \ -H "Content-Type: application/json" \ -d '{ "type": "fs", "settings": { "location": "/var/backups/opensearch", "compress": true } }'
Y despejar los índices por defecto para evitar cualquier problema:
curl \ -X DELETE \ "https://localhost:9200/pandorafms-*,"\ ".opensearch-observability,"\ ".plugins-ml-config,"\ "security-auditlog-*,"\ "top_queries-*,"\ ".opensearch-sap-*"\ --cert /etc/opensearch/admin.pem \ --key /etc/opensearch/admin-key.pem \ -k
Finalmente se importa la copia hecha en el nuevo servidor:
curl \ -X POST \ "https://localhost:9200/_snapshot/migration/migration/_restore" \ --cert /etc/opensearch/admin.pem \ --key /etc/opensearch/admin-key.pem \ -k \ -H "Content-Type: application/json" \ -d '{ "indices": "*,-.opendistro_security", "include_global_state": true, "partial": false }'
Se omite .opendistro_security para evitar que se bloquee a sí mismo el plugin de seguridad.
Se debe esperar una respuesta {“accepted”:true}.
Fase 3
Comprobación:
curl \ -X GET \ "https://localhost:9200/_cat/indices?v" \ --cert /etc/opensearch/admin.pem \ --key /etc/opensearch/admin-key.pem \ -k
Y reiniciar el PFMS Server:
sudo systemctl start pandora_server
Con este proceso se deberían de tener todos los logs accesibles y visibles desde la Consola web PFMS conectada al servidor OpenSearch de destino.