Comment utiliser ISM pour gérer un espace de stockage restreint dans Amazon OpenSearch Service ?

Lecture de 7 minute(s)
0

Mon cluster Amazon OpenSearch Service manque d'espace de stockage.

Brève description

La gestion d'états d’index (ISM) vous permet d'automatiser les tâches de routine, puis de les appliquer aux index et aux modèles d'index dans OpenSearch Service. Avec l’ISM, vous pouvez définir des politiques de gestion personnalisées qui vous aident à gérer des problèmes tels que le faible espace disque. Par exemple, vous pouvez utiliser une opération de roulement et une politique ISM pour automatiser la suppression d'anciens index en fonction de conditions telles que la taille de l'index. L'opération de roulement permet de déplacer une cible vers un nouvel index lorsqu'un index existant remplit la condition définie.

Pour créer une politique ISM pour un modèle d'index à l'aide d'une opération telle que la roulement, effectuez les opérations suivantes :

1.Configurez votre indice de roulement.

2.Créez une stratégie ISM.

3.Attachez la stratégie à un index.

4.Ajoutez le modèle.

Lorsque vous avez associé votre stratégie à un index, celui-ci commence à s'initialiser, puis passe à différents états jusqu'à la fin de l'opération de roulement. Pour plus d'informations sur l'opération de roulement, voir la section roulement sur le site Web de Open Distro for OpenSearch.

Résolution

Configurez votre indice de roulement

Créez un index et un alias dont le format correspond au modèle d'index :

^.*-\d+$

Remarque : Assurez-vous de configurer correctement votre alias de roulement. Sinon, vous recevez un message d'erreur.

Dans l'exemple suivant, « test-index-000001 » est créé et rempli avec plusieurs documents. Dans la mesure où cet exemple utilise un index de roulement, le format de l'index doit correspondre au modèle.

PUT test-index-000001/_doc/1
{
  "user": "testuser",
  "post_date": "2020-05-08T14:12:12",
  "message": "ISM testing"
}

Un index de roulement nécessite un alias pointant vers le dernier index. Autrement dit, vous devez créer un alias (« test-index ») à l'aide de la requête suivante :

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "test-index-000001",
        "alias": "test-index"
      }
    }
  ]
}

Remarque : Si une opération de roulement est incluse dans la stratégie ISM, vous devez inclure un alias de roulement. Pour plus d'informations, consultez la section Pourquoi l'action d'index de roulement prévue dans ma stratégie ISM échoue-t-elle constamment dans Amazon OpenSearch Service ?

Création d'une stratégie ISM

Dans OpenSearch Dashboards, choisissez l'onglet Gestion des index, puis créez une stratégie ISM pour votre opération de roulement.

Par exemple :

Passez à l'état chaud

{
  "policy": {
    "policy_id": "Roll_over_policy",
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [
          {
            "rollover": {
              "min_size": "10mb"
            }
          }
        ],
        "transitions": [
          {
            "state_name": "warm"
          }
        ]
      },
      {
        "name": "warm",
        "actions": [
          {
            "replica_count": {
              "number_of_replicas": 2
            }
          }
        ],
        "transitions": []
      }
    ]
  }
}

Dans cette stratégie ISM, il existe deux états définis : « chaud » et « tiède ». Par défaut, votre index est à l'état « chaud ». L'index passe à l'état « tiède » dès que sa taille atteint 10 Mo et qu'un nouvel index de roulement est créé. À l'état « tiède », vous pouvez effectuer diverses actions sur l'index telles la modification du nombre de réplications à deux ou l’exécution d’une opération force \ _merge.

Retournez pour supprimer au bout de quelques jours

{
  "policy": {
    "policy_id": "Roll_over_policy",
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [
          {
            "rollover": {
              "min_size": "10mb"
            }
          }
        ],
        "transitions": [
          {
            "state_name": "delete",
            "conditions": {
              "min_index_age": "30d"
            }
          }
        ]
      },
      {
        "name": "delete",
        "actions": [
          {
            "delete": {}
          }
        ],
        "transitions": []
      }
    ]
  }
}

Dans cette stratégie ISM, deux états sont définis : « chaud » et « suppression ». Par défaut, l'index est à l'état « chaud ». Lorsque l'index atteint 10 Mo, un nouvel index de transfert est créé. Ensuite, au bout de 30 jours, l'index passe à l'état « Suppression » et est supprimé.

Associer la stratégie à un index

Pour associer votre stratégie ISM à un index, procédez comme suit :

1.Ouvrez les tableaux de bord OpenSearch sur la console OpenSearch Service. Vous trouverez un lien vers les tableaux de bord OpenSearch dans le résumé du domaine de votre console OpenSearch Service.

2.Choisissez l'onglet Gestion des index.

3.Sélectionnez l'index auquel vous souhaitez associer votre stratégie ISM (par exemple : « test-index-000001 »).

4.Choisissez Appliquer la stratégie.

5.(Facultatif) Si votre stratégie spécifie des actions nécessitant un alias, fournissez l'alias, puis choisissez Appliquer. Votre index apparaît sous la liste des index gérés par des stratégies.

Mettre à jour la stratégie d'un index existant

Remarque : Toute mise à jour de la stratégie existante ne s'applique pas automatiquement aux index existants, elle nécessite une nouvelle application de la même stratégie aux index.

Pour appliquer de nouveau votre stratégie ISM à un index existant, effectuez les opérations suivantes :

1.Ouvrez les tableaux de bord OpenSearch sur la console OpenSearch Service.

2.Choisissez l'onglet Gestion des index.

3.Dans la section Index gérés par les stratégies, choisissez Modifier la stratégie.

4.Choisissez les index auxquels vous souhaitez appliquer les modifications (par exemple : « test-index-000001 »).

5.Choisissez l'état actuel des index.

6.Dans la section Choisir une nouvelle stratégie, choisissez le nom de la stratégie de mise à jour.

7.(Facultatif) Si vous souhaitez faire passer les index à un autre état après la mise à jour de la stratégie, choisissez l’option Changer les index vers l'état suivant après l'entrée en vigueur de la stratégie. Ensuite, choisissez l'état dans la liste déroulante.

Ajouter le modèle

Attachez la stratégie à un index spécifique tel que « test-index-000002 », qui a été créé à la suite de la stratégie ISM. Grâce à cet attachement, les index sont également reportés une fois que la condition requise (telle que la taille de l'index) est remplie.

Vous pouvez créer et utiliser un modèle ISM comme le suivant :

PUT _plugins/_ism/policies/test_policy
{
  "policy": {
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "last_updated_time": 1642027350875,
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [
          {
            "rollover": {
              "min_size": "10mb"
            }
          }
        ],
        "transitions": [
          {
            "state_name": "warm"
          }
        ]
      },
      {
        "name": "warm",
        "actions": [
          {
            "replica_count": {
              "number_of_replicas": 2
            }
          }
        ],
        "transitions": []
      }
    ],
    "ism_template": {
      "index_patterns": [
        "test*"
      ],
      "priority": 100
    }
  }
}

Dans cet exemple, l'API « explain index » vérifie que le modèle « test \ _policy » que vous avez créé est attaché à l'index nouvellement créé :

GET _plugins/_ism/explain/test-index-000002
{
  "test-index-000002": {
    "index.plugins.index_state_management.policy_id": "test_policy",
    "index.opendistro.index_state_management.policy_id": "test_policy",
    "index": "test-index-000002",
    "index_uuid": "CZrQ-RzRS8SmiWIuyqFmVg",
    "policy_id": "test_policy",
    "enabled": true
  },
  "total_managed_indices": 1
}

**Remarque **: Cet index s'affiche également dans la section Index gérés de l'onglet Gestion des index sur les tableaux de bord d'OpenSearch.

La stratégie ISM prévoit que :

Lorsqu'une stratégie ISM est attachée à un index, celui-ci passe à l'état « Initialisation ». À partir de l'état « Initialisation », l'index passe à l'état « Par défaut », qui est défini dans la stratégie. Cette opération « d'initialisation », ainsi que toutes les opérations suivantes, peuvent durer de 30 à 48 minutes. ISM utilise ce temps pour exécuter des actions de stratégie, puis vérifie les conditions et fait passer l'index à différents états. Une gigue aléatoire de 0 à 60 % est également ajoutée pour s'assurer qu'il n'y ait pas de hausses d'activités provenant de tous les index en même temps.

**Remarque :**Dans le cas d'une opération de roulement, un index est « terminé » lorsqu'il a effectué un roulement, est passé à l’état « tiède » et que le nombre de réplications a été mis à jour.

Si vous utilisez une stratégie ISM et que l'index ne migre pas correctement, vérifiez l'état de l'ISM.

Pour vérifier l'état de la migration pour un index particulier, utilisez la syntaxe suivante :

GET _ultrawarm/migration/<put_index_name_here>/_status

Pour obtenir une migration récapitulative de tous les index, utilisez la syntaxe suivante :

GET _ultrawarm/migration/_status?

Informations complémentaires

Exemples de stratégies

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an