Migration d'OpenSearch entre serveurs

Introduction

Ce sujet a pour fonction de servir de guide pour effectuer une migration d'un serveur OpenSearch vers un autre OpenSearch, de la manière la plus efficace et simple possible, en copiant absolument tout ce qui se trouvait sur le serveur source pour l'importer sur le serveur cible.

Points importants :

  • Les identifiants par défaut appliqués lors de l'installation automatisée via le script d'installation online d'OpenSearch pour Pandora FMS (admin:P4nd0r4!FMS) sont indiqués.
  • Le nom donné au snapshot dans le guide est migration, vous pouvez en indiquer un autre pour une meilleure identification si nécessaire.

Étapes à suivre

Prérequis

Les dossiers de backups d'OpenSearch doivent être déclarés sur les serveurs.

Dans le fichier /etc/opensearch/opensearch.yml, sur les deux serveurs, ajoutez cette ligne :

path.repo: ["/var/backups/opensearch"]

Redémarrez le service OpenSearch sur les deux serveurs avec la commande suivante :

sudo systemctl restart opensearch

Phase 1

Sur le serveur source, nous préparons le dossier et les autorisations pour héberger le 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/

Une commande rm est exécutée par sécurité, au cas où il existerait déjà (pour quelque raison que ce soit), afin de démarrer le processus avec un répertoire propre.

Nous enregistrons le dépôt dans OpenSearch. S'il y en avait un précédemment créé, il est supprimé et recréé :

# 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
    }
  }'

Dans ce cas, le dépôt s'appelle migration, comme indiqué au début du document.

Le snapshot est maintenant généré avec tout :

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
  }'

Comme il est indiqué wait_for_completion=true, le terminal sera arrêté et bloqué jusqu'à ce qu'il se termine.

À la fin, vous pouvez compresser les fichiers obtenus et les envoyer au serveur cible :

# 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/

À défaut, vous pouvez utiliser tout autre protocole de transfert de fichiers de votre choix.

Phase 2

Si Pandora FMS est en cours d'exécution et connecté à l'OpenSearch cible, il doit être arrêté :

sudo systemctl stop pandora_server

Ensuite, il faut décompresser le backup et appliquer les autorisations appropriées. Si vous aviez déjà quelque chose dans le dossier de backups d'OpenSearch sur le serveur cible (pour quelque raison que ce soit), vous devez d'abord supprimer ce contenu :

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/

Ensuite, nous allons enregistrer le dépôt sur le serveur OpenSearch cible :

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
    }
  }'

Et effacer les index par défaut pour éviter tout problème :

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

Enfin, la copie effectuée est importée sur le nouveau serveur :

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
  }'

.opendistro_security est omis pour éviter que le plugin de sécurité ne se bloque lui-même.

Vous devez attendre une réponse {“accepted”:true}.

Phase 3

Vérification :

curl \
  -X GET \
  "https://localhost:9200/_cat/indices?v" \
  --cert /etc/opensearch/admin.pem \
  --key /etc/opensearch/admin-key.pem \
  -k

Et redémarrer le serveur PFMS :

sudo systemctl start pandora_server

Avec ce processus, vous devriez avoir tous les logs accessibles et visibles depuis la console web PFMS connectée au serveur OpenSearch cible.

← Retour à l'index de la documentation de Pandora FMS