Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'instantanés d'index dans Amazon Service OpenSearch
Les instantanés d'Amazon OpenSearch Service sont des sauvegardes des index et de l'état d'un cluster. L'état inclut les paramètres de cluster, les informations de nœud, les paramètres d'index et l'allocation des partitions.
OpenSearch Les instantanés de service se présentent sous les formes suivantes :
-
Les instantanés automatiques sont uniquement destinés à la récupération de cluster. Vous pouvez les utiliser pour restaurer votre domaine en cas de statut de cluster rouge ou de perte de données. Pour plus d'informations, consultez la section Restauration des instantanés ci-dessous. OpenSearch Le service stocke les instantanés automatisés dans un compartiment Amazon S3 préconfiguré sans frais supplémentaires.
-
Les instantanés manuels sont destinés à la récupération de cluster ou au déplacement de données d'un cluster à un autre. Vous devez initier les instantanés manuels. Ces instantanés sont stockés dans votre propre compartiment Amazon S3 et des frais S3 standard s'appliquent. Si vous disposez d'un instantané provenant d'un OpenSearch cluster autogéré, vous pouvez l'utiliser pour migrer vers un domaine de OpenSearch service. Pour plus d'informations, consultez la section Migration vers Amazon OpenSearch Service.
Tous les domaines de OpenSearch service prennent des instantanés automatisés, mais la fréquence varie comme suit :
-
Pour les domaines exécutant Elasticsearch 5.3 OpenSearch ou version ultérieure, OpenSearch Service prend des instantanés automatisés toutes les heures et en conserve jusqu'à 336 pendant 14 jours. Les instantanés horaires sont moins perturbateurs en raison de leur nature progressive. Ils fournissent également un point de récupération plus récent en cas de problèmes de domaine.
-
Pour les domaines exécutant Elasticsearch 5.1 et versions antérieures, le OpenSearch Service prend des instantanés automatisés quotidiens pendant l'heure que vous spécifiez, en conserve jusqu'à 14 et ne conserve aucune donnée d'instantané pendant plus de 30 jours.
Si votre cluster passe au statut rouge, tous les instantanés automatiques échouent tant que l'état du cluster persiste. Si vous ne corrigez pas le problème dans un délai de deux semaines, vous risquez de perdre définitivement les données de votre cluster. Pour obtenir les étapes de dépannage, consultez Statut de cluster rouge.
Rubriques
- Prérequis
- Inscription d'un référentiel d'instantanés manuels
- Prise d'instantanés manuels
- Restauration des instantanés
- Suppression d’instantanés manuels
- Automatisation des instantanés grâce à la gestion des instantanés
- Automatisation des instantanés avec Index State Management
- Utilisation de Curator pour les instantanés
Prérequis
Pour créer manuellement des instantanés, vous devez utiliser IAM et Amazon S3. Vérifiez que vous répondez aux conditions préalables suivantes avant d'essayer de prendre un instantané.
Prérequis | Description |
---|---|
Compartiment S3 | Créez un compartiment S3 pour stocker les instantanés manuels de votre domaine OpenSearch de service. Pour plus d'informations, consultez Créer un compartiment dans le Guide de l'utilisateur d'Amazon Simple Storage Service. Mémorisez le nom du compartiment pour l'utiliser aux emplacements suivants :
ImportantN'appliquez pas de règle de cycle de vie S3 Glacier à ce compartiment. Les instantanés manuels ne prennent pas en charge la classe de stockage S3 Glacier. |
Rôle IAM | Créez un rôle IAM pour déléguer des autorisations au OpenSearch service. Pour obtenir des instructions, consultez la section Création d'un rôle IAM (console) du Guide de l'utilisateur IAM. Le reste de ce chapitre fait référence à ce rôle en tant que Attachement d'une politique IAM Attachez la stratégie suivante à
Pour obtenir des instructions sur l'attachement d'une politique à un rôle, consultez Ajout d'autorisations d'identité IAM dans le Guide de l'utilisateur IAM. Modification de la relation d'approbation Modifiez la relation de confiance de
Pour obtenir des instructions sur la modification de la relation d'approbation, consultez Modification d'une politique d'approbation de rôle dans le Guide de l'utilisateur IAM. |
Autorisations |
Pour enregistrer le référentiel de snapshots, vous devez être en mesure de passer
Si votre utilisateur ou votre rôle ne dispose pas d'
|
Inscription d'un référentiel d'instantanés manuels
Vous devez enregistrer un référentiel de clichés auprès du OpenSearch Service avant de pouvoir prendre des instantanés d'index manuels. Cette opération unique nécessite que vous signiez votre AWS demande avec des informations d'identification autoriséesTheSnapshotRole
, comme décrit dansPrérequis.
Étape 1 : Cartographier le rôle du snapshot dans les OpenSearch tableaux de bord (si vous utilisez un contrôle d'accès précis)
Le contrôle précis des accès introduit une étape supplémentaire lors de l'inscription d'un référentiel. Même si vous utilisez l'authentification de base HTTP à toutes les autres fins, vous devez mapper le rôle manage_snapshots
à votre rôle IAM qui a les autorisations iam:PassRole
pour transmettre TheSnapshotRole
.
-
Accédez au plugin OpenSearch Dashboards correspondant à votre domaine OpenSearch de service. Vous pouvez trouver le point de terminaison Dashboards sur le tableau de bord de votre domaine sur la console OpenSearch de service.
-
Dans le menu principal, choisissez Security (Sécurité), Roles (Rôles), puis sélectionnez le rôle manage_snapshots.
-
Choisissez Mapped users (Utilisateurs mappés), Manage mapping (Gérer le mappage).
-
Ajoutez l'ARN du rôle ayant les autorisations de transmettre
TheSnapshotRole
. Placez les ARN de rôle sous les Backend roles (Rôles de backend).arn:aws:iam::
123456789123
:role/role-name
-
Sélectionnez Map (Mapper) et vérifiez que l'utilisateur ou le rôle s'affiche sous Mapped users (Utilisateurs mappés).
Étape 2 : Inscrire un référentiel
L'onglet Snapshots suivant montre comment enregistrer un répertoire de snapshots. Pour les options spécifiques au chiffrement d'un instantané manuel et à l'enregistrement d'un instantané après la migration vers un nouveau domaine, consultez les onglets correspondants.
Utilisation de l'exemple de client Python
Le client Python est plus facile à automatiser qu'une simple requête HTTP et peut être réutilisé. Si vous choisissez d'utiliser cette méthode pour enregistrer un référentiel d'instantanés, enregistrez l'exemple de code Python suivant en tant que fichier Python, comme register-repo.py
. Le client a besoin des packages AWS SDK for Python (Boto3)
Mettez à jour les variables suivantes dans l'exemple de code : host
, region
, path
et payload
.
import boto3 import requests from requests_aws4auth import AWS4Auth host = '' # domain endpoint region = '' # e.g. us-west-1 service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) # Register repository path = '/_snapshot/
my-snapshot-repo-name
' # the OpenSearch API endpoint url = host + path payload = { "type": "s3", "settings": { "bucket": "s3-bucket-name
", "base_path": "my/snapshot/directory
", "region": "us-west-1
", "role_arn": "arn:aws:iam::123456789012
:role/snapshot-role
" } } headers = {"Content-Type": "application/json"} r = requests.put(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text) # # Take snapshot # # path = '_snapshot/my-snapshot-repo-name/my-snapshot' # url = host + path # # r = requests.put(url, auth=awsauth) # # print(r.text) # # # Delete index # # path = 'my-index' # url = host + path # # r = requests.delete(url, auth=awsauth) # # print(r.text) # # # Restore snapshot (all indexes except Dashboards and fine-grained access control) # # path = '_snapshot/my-snapshot-repo-name/my-snapshot/_restore' # url = host + path # # payload = { # "indices": "-.kibana*,-.opendistro_security,-.opendistro-*", # "include_global_state": False # } # # headers = {"Content-Type": "application/json"} # # r = requests.post(url, auth=awsauth, json=payload, headers=headers) # # print(r.text) # # # Restore snapshot (one index) # # path = '_snapshot/my-snapshot-repo-name/my-snapshot/_restore' # url = host + path # # payload = {"indices": "my-index"} # # headers = {"Content-Type": "application/json"} # # r = requests.post(url, auth=awsauth, json=payload, headers=headers) # # print(r.text)
Prise d'instantanés manuels
Les instantanés ne sont pas créés instantanément. Ils prennent du temps et ne représentent pas point-in-time une vue parfaite du cluster. Lors de la création d'un instantané, vous pouvez toujours indexer des documents et adresser d'autres demandes au cluster. Toutefois, les nouveaux documents et les mises à jour des documents existants ne sont généralement pas inclus dans l'instantané. Le cliché inclut les partitions principales telles qu'elles existaient au moment OpenSearch de son lancement. En fonction de la taille de votre groupe de threads d'instantanés, différentes partitions peuvent être incluses dans l'instantané à différents moments. Pour connaître les meilleures pratiques en matière de capture d'écran, voirAméliorez les performances des instantanés.
Stockage et performances des instantanés
OpenSearch les instantanés sont incrémentiels, ce qui signifie qu'ils ne stockent que les données modifiées depuis le dernier instantané réussi. Cette nature incrémentielle signifie que la différence d'utilisation de disque entre des instantanés fréquents et rares est souvent minime. En d'autres termes, la réalisation d'instantanés horaires pendant une semaine (avec un total de 168 instantanés) peut ne pas utiliser beaucoup plus d'espace disque que celle d'un seul instantané à la fin de la semaine. De plus, plus vous prenez des instantanés fréquemment, plus vous les réalisez rapidement. Par exemple, les instantanés quotidiens peuvent prendre 20 à 30 minutes, alors que les instantanés horaires peuvent se terminer en quelques minutes. Certains OpenSearch utilisateurs prennent des instantanés toutes les demi-heures.
Prendre un instantané
Lorsque vous créez un paramètre, vous spécifiez les informations suivantes :
-
Nom de votre référentiel d'instantanés
-
Nom de l'instantané
Les exemples de ce chapitre utilisent curl
Si vos politiques d'accès spécifient des utilisateurs ou des rôles, vous devez signer vos demandes de capture instantanée. Pour curl, vous pouvez utiliser l'--aws-sigv4
option
Pour prendre un instantané manuel, procédez comme suit :
-
Vous ne pouvez pas prendre un instantané si un instantané est en cours. Pour vérifier, exécutez la commande suivante :
curl -XGET '
domain-endpoint
/_snapshot/_status' -
Exécutez la commande suivante pour prendre un instantané manuel :
curl -XPUT '
domain-endpoint
/_snapshot/repository-name
/snapshot-name
'Pour inclure ou exclure certains index et spécifier d'autres paramètres, ajoutez un corps de requête. Pour la structure de la demande, consultez la section Prendre des instantanés
dans la OpenSearch documentation.
Note
Le temps nécessaire pour prendre un instantané augmente en fonction de la taille du domaine de OpenSearch service. Les opérations d'instantanés de longue durée rencontrent parfois l'erreur suivante : 504 GATEWAY_TIMEOUT
. Vous pouvez généralement ignorer ces erreurs et attendre que l'opération se termine avec succès. Exécutez la commande suivante pour vérifier l'état de tous les instantanés de votre domaine :
curl -XGET '
domain-endpoint
/_snapshot/repository-name
/_all?pretty'
Restauration des instantanés
Avant de restaurer un instantané, assurez-vous que le domaine de destination n'utilise pas le mode Multi-AZ avec mode veille. L'activation du mode veille entraîne l'échec de l'opération de restauration.
Avertissement
Si vous utilisez des alias d'index, vous devez soit cesser d'écrire des demandes à un alias, soit passer de l'alias à un autre index avant de supprimer son index. L'arrêt des demandes d'écriture contribue à éviter le scénario suivant :
-
Vous supprimez un index, ce qui supprime également son alias.
-
Une demande d'écriture errante à l'alias maintenant supprimé crée un nouvel index avec le même nom que celui de l'alias.
-
Vous ne pouvez plus utiliser l'alias en raison d'un conflit de noms avec le nouvel index. Si vous avez basculé l'alias vers un autre index, spécifiez
"include_aliases": false
lorsque vous restaurez à partir d'un instantané.
Pour restaurer un instantané
-
Identifiez l'instantané que vous voulez restaurer. Assurez-vous que tous les paramètres de cet index, tels que les packages d'analyseurs personnalisés ou les paramètres d'exigences d'allocation, sont compatibles avec le domaine. Pour afficher tous les référentiels d'instantanés, exécutez la commande suivante :
curl -XGET '
domain-endpoint
/_snapshot?pretty'Une fois le référentiel identifié, exécutez la commande suivante pour afficher tous les instantanés :
curl -XGET '
domain-endpoint
/_snapshot/repository-name
/_all?pretty'Note
La plupart des instantanés automatiques sont stockés dans le référentiel
cs-automated
. Si votre domaine chiffre les données au repos, elles sont stockées dans le référentielcs-automated-enc
. Si vous ne voyez pas le référentiel d'instantanés manuels que vous recherchez, vérifiez que vous l'avez enregistré dans le domaine. -
(Facultatif) Supprimez ou renommez un ou plusieurs index du domaine de OpenSearch service en cas de conflit de dénomination entre les index du cluster et ceux du cliché. Vous ne pouvez pas restaurer un instantané de vos index sur un OpenSearch cluster qui contient déjà des index portant le même nom.
En cas de conflits de noms d'index, les options suivantes s'offrent à vous :
-
Supprimez les index du domaine de OpenSearch service existant, puis restaurez le snapshot.
-
Renommez les index à mesure que vous les restaurez à partir de l'instantané, puis réindexez-les ultérieurement.
-
Restaurez le snapshot dans un autre domaine OpenSearch de service (uniquement possible avec les snapshots manuels).
La commande suivante supprime tous les index existants d'un domaine :
curl -XDELETE '
domain-endpoint
/_all'Cependant, si vous ne prévoyez pas de restaurer tous les index, vous pouvez simplement en supprimer un :
curl -XDELETE '
domain-endpoint
/index-name
' -
-
Pour restaurer un instantané, exécutez la commande suivante :
curl -XPOST '
domain-endpoint
/_snapshot/repository-name
/snapshot-name
/_restore'En raison d'autorisations spéciales sur les OpenSearch tableaux de bord et d'index de contrôle d'accès précis, les tentatives de restauration de tous les index peuvent échouer, en particulier si vous essayez de restaurer à partir d'un instantané automatique. L'exemple suivant restaure un seul index,
my-index
, depuis2020-snapshot
vers le référentiel d'instantanéscs-automated
:curl -XPOST '
domain-endpoint
/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "my-index"}' \ -H 'Content-Type: application/json'Vous pouvez également restaurer tous les index à l'exception des index Dashboards et des index de contrôle précis des accès :
curl -XPOST '
domain-endpoint
/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "-.kibana*,-.opendistro*"}' \ -H 'Content-Type: application/json'Vous pouvez restaurer un instantané sans supprimer ses données à l'aide des
rename_replacement
paramètresrename_pattern
et. Pour plus d'informations sur ces paramètres, consultez les champs de demandede l'API Restore Snapshot et l'exemple de demande dans la OpenSearch documentation.
Note
Si seule une partie des partitions primaires était disponible pour les index impliqués, un instantané peut avoir l'state
PARTIAL
. Cette valeur indique que les données d'au moins une partition n'ont pas été stockées avec succès. Vous pouvez toujours effectuer une restauration à partir d'un instantané partiel, mais vous aurez probablement besoin d'anciens instantanés pour restaurer les index manquants.
Suppression d’instantanés manuels
Pour supprimer un instantané manuel, exécutez la commande suivante :
DELETE _snapshot/
repository-name
/snapshot-name
Automatisation des instantanés grâce à la gestion des instantanés
Vous pouvez configurer une politique de gestion des instantanés (SM) dans les OpenSearch tableaux de bord afin d'automatiser la création et la suppression périodiques d'instantanés. SM peut prendre un instantané d'un groupe d'indices, tandis que Index State Management ne peut prendre qu'un seul instantané par index. Pour utiliser SM in OpenSearch Service, vous devez enregistrer votre propre référentiel Amazon S3. Pour obtenir des instructions relatives à l'enregistrement de votre référentiel, consultez la section Enregistrement d'un référentiel de snapshots manuel.
Avant SM, OpenSearch Service offrait une fonction de capture instantanée gratuite et automatisée qui est toujours activée par défaut. Cette fonctionnalité envoie des instantanés dans le référentiel géré par le service. cs-*
Pour désactiver cette fonctionnalité, contactez. AWS Support
Pour plus d'informations sur la fonctionnalité SM, consultez la section Gestion des snapshots
SM ne prend actuellement pas en charge la création de snapshots sur plusieurs types d'index. Par exemple, si vous essayez de créer un instantané sur plusieurs index avec le niveau chaud *
et que certains index se trouvent dans le niveau chaud, la création de l'instantané échouera. Si vous avez besoin que votre instantané contienne plusieurs types d'index, utilisez l'action Instantané ISM
Configurer des autorisations
Si vous effectuez une mise à niveau vers la version 2.5 à partir d'une version précédente du domaine de OpenSearch service, il est possible que les autorisations de sécurité de gestion des snapshots ne soient pas définies sur le domaine. Les utilisateurs non administrateurs doivent être mappés à ce rôle afin d'utiliser la gestion des instantanés sur les domaines à l'aide d'un contrôle d'accès précis. Pour créer manuellement le rôle de gestion des snapshots, effectuez les opérations suivantes :
-
Dans les OpenSearch tableaux de bord, accédez à Sécurité, puis sélectionnez Autorisations.
-
Choisissez Create action group (Créer un groupe d'actions) et configurez les groupes suivants :
Nom du groupe Autorisations snapshot_management_full_access
-
cluster:admin/opensearch/snapshot_management/*
-
cluster:admin/opensearch/notifications/feature/publish
-
cluster:admin/repository/*
-
cluster:admin/snapshot/*
snapshot_management_read_access
-
cluster:admin/opensearch/snapshot_management/policy/get
-
cluster:admin/opensearch/snapshot_management/policy/search
-
cluster:admin/opensearch/snapshot_management/policy/explain
-
cluster:admin/repository/get
-
cluster:admin/snapshot/get
-
-
Choisissez Roles (Rôles), puis Create role (Créer un rôle).
-
Nommez le rôle snapshot_management_role.
-
Pour les autorisations du cluster, sélectionnez
snapshot_management_full_access
ousnapshot_management_read_access
. -
Choisissez Créer.
-
Après avoir créé le rôle, associez-le à n'importe quel rôle d'utilisateur ou de backend qui gérera les instantanés.
Considérations
Lorsque vous configurez la gestion des snapshots, tenez compte des points suivants :
-
Une seule politique est autorisée par référentiel.
-
Jusqu'à 400 instantanés sont autorisés pour une politique.
-
Cette fonctionnalité ne s'exécute pas si le statut de votre domaine est rouge, s'il est soumis à une pression JVM élevée (85 % ou plus) ou si la fonction de capture instantanée est bloquée. Lorsque les performances globales d'indexation et de recherche de votre cluster sont affectées, SM peut également être affecté.
-
Une opération de capture instantanée ne démarre qu'une fois l'opération précédente terminée, de sorte qu'aucune opération de capture d'écran simultanée n'est activée par une seule politique.
-
Plusieurs politiques associées au même calendrier peuvent entraîner un pic de ressources. Si les indices instantanés des politiques se chevauchent, les opérations de capture instantanée au niveau des partitions ne peuvent être exécutées que de manière séquentielle, ce qui peut entraîner un problème de performance en cascade. Si les politiques partagent un référentiel, il y aura un pic d'opérations d'écriture dans ce référentiel.
-
Nous vous recommandons de planifier l'automatisation de vos opérations de capture instantanée au maximum une fois par heure, sauf si vous avez un cas d'utilisation particulier.
Automatisation des instantanés avec Index State Management
Vous pouvez utiliser l'opération Index State Management (ISM) snapshot
pour déclencher automatiquement des instantanés d'index en fonction des modifications en termes d'âge, de taille ou de nombre de documents. ISM est préférable lorsque vous avez besoin d'un instantané par index. Si vous avez besoin d'un instantané d'un groupe d'indices, reportez-vous àAutomatisation des instantanés grâce à la gestion des instantanés.
Pour utiliser SM in OpenSearch Service, vous devez enregistrer votre propre référentiel Amazon S3. Pour un exemple de politique ISM utilisant l'opération snapshot
, consultez Exemples de politiques.
Utilisation de Curator pour les instantanés
Si ISM ne fonctionne pas pour la gestion des index et des instantanés, vous pouvez utiliser Curator à la place. Curator offre des fonctionnalités de filtrage avancé qui peuvent simplifier les tâches de gestion sur les clusters complexes. Utilisez pip
pip install elasticsearch-curator
Vous pouvez utiliser Curator comme une interface de ligne de commande (CLI) ou API Python. Si vous utilisez l'API Python, vous devez utiliser la version 7.13.4 ou une version antérieure du client elasticsearch-py
Si vous utilisez l'interface CLI, exportez vos informations d'identification au niveau de la ligne de commande et configurez curator.yml
comme suit :
client: hosts: search-
my-domain
.us-west-1
.es.amazonaws.com port: 443 use_ssl: True aws_region:us-west-1
aws_sign_request: True ssl_no_validate: False timeout: 60 logging: loglevel: INFO