Tutoriel : Migration vers Amazon Service OpenSearch - Amazon OpenSearch Service

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.

Tutoriel : Migration vers Amazon Service OpenSearch

Les instantanés d'index constituent un moyen populaire de migrer d'un cluster Elasticsearch autogéré OpenSearch ou existant vers Amazon Service. OpenSearch Voici les grandes étapes de ce processus :

  1. Créez un instantané du cluster existant et chargez-le dans un compartiment Amazon S3.

  2. Créez un domaine OpenSearch de service.

  3. Donnez au OpenSearch service les autorisations nécessaires pour accéder au compartiment et assurez-vous que vous disposez des autorisations nécessaires pour utiliser les instantanés.

  4. Restaurez le snapshot sur le domaine OpenSearch de service.

Cette démonstration fournit des étapes plus détaillées et d'autres options, le cas échéant.

Création et chargement de l'instantané

Bien que vous puissiez utiliser le plugin repository-s3 pour créer des instantanés directement sur S3, vous devez l'installer sur chaque nœud, le modifier opensearch.yml (ou elasticsearch.yml si vous utilisez un cluster Elasticsearch), redémarrer chaque nœud, ajouter vos AWS informations d'identification et enfin prendre le snapshot. Le plug-in est une excellente option pour une utilisation continue ou pour la migration de clusters plus volumineux.

Pour les clusters plus petits, une approche unique consiste à prendre un instantané du système de fichiers partagé, puis AWS CLI à l'utiliser pour le télécharger sur S3. Si vous avez déjà créé l'instantané, passez directement à l'étape 4.

Pour créer un instantané et le charger sur Amazon S3
  1. Ajoutez le paramètre path.repo à opensearch.yml (ou Elasticsearch.yml) sur tous les nœuds, puis redémarrez chaque nœud.

    path.repo: ["/my/shared/directory/snapshots"]
  2. Enregistrez un référentiel d'instantanés, ce qui est nécessaire avant de prendre un instantané. Un référentiel n'est qu'un emplacement de stockage : un système de fichiers partagé, Amazon S3, un système de fichiers distribué Hadoop (HDFS), etc. Dans ce cas, nous utiliserons un système de fichiers partagé (« fs ») :

    PUT _snapshot/my-snapshot-repo-name { "type": "fs", "settings": { "location": "/my/shared/directory/snapshots" } }
  3. Créez l'instantané :

    PUT _snapshot/my-snapshot-repo-name/my-snapshot-name { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }
  4. Installez l'AWS CLI, puis exécutez aws configure pour ajouter vos informations d'identification.

  5. Accédez au répertoire de l'instantané. Exécutez ensuite les commandes suivantes pour créer un compartiment S3 et charger le contenu du répertoire de l'instantané dans ce compartiment :

    aws s3 mb s3://amzn-s3-demo-bucket --region us-west-2 aws s3 sync . s3://amzn-s3-demo-bucket --sse AES256

    Selon la taille de l'instantané et la vitesse de votre connexion Internet, cette opération peut prendre un certain temps.

Création d'un domaine

Bien que la console soit le moyen le plus simple de créer un domaine, dans ce cas, le terminal est déjà ouvert et AWS CLI installé. Modifiez la commande suivante pour créer un domaine qui correspond à vos besoins :

aws opensearch create-domain \ --domain-name migration-domain \ --engine-version OpenSearch_1.0 \ --cluster-config InstanceType=c5.large.search,InstanceCount=2 \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true,TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 \ --advanced-security-options Enabled=true,InternalUserDatabaseEnabled=true,MasterUserOptions='{MasterUserName=master-user,MasterUserPassword=master-user-password}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["*"]},"Action":["es:ESHttp*"],"Resource":"arn:aws:es:us-west-2:123456789012:domain/migration-domain/*"}]}' \ --region us-west-2

En l'état, la commande crée un domaine accessible à Internet avec deux nœuds de données, chacun avec 100 Gio de stockage. Il permet également un contrôle d'accès précis avec l'authentification de base HTTP et tous les paramètres de chiffrement. Utilisez la console OpenSearch de service si vous avez besoin d'une configuration de sécurité plus avancée, telle qu'un VPC.

Avant d'exécuter la commande, modifiez le nom de domaine, les informations d'identification de l'utilisateur principal et le numéro de compte. Spécifiez la même version Région AWS que celle que vous avez utilisée pour le compartiment S3 et une OpenSearch/Elasticsearch version compatible avec votre instantané.

Important

Les instantanés ne sont compatibles qu'avec la version actuellement installée et les versions supérieures majeures. Par exemple, vous ne pouvez pas restaurer un instantané à partir d'un OpenSearch 1. cluster x sur un Elasticsearch 7. x cluster, seulement un OpenSearch 1. x ou 2. grappe x. La version mineure compte aussi. Vous ne pouvez pas restaurer un instantané à partir d'un cluster 5.3.3 autogéré sur un domaine de service 5.3.2 OpenSearch . Nous vous recommandons de choisir la version la plus récente OpenSearch d'Elasticsearch prise en charge par votre instantané. Pour obtenir un tableau des versions compatibles, consultez Utilisation d'un instantané pour migrer des données.

Accordez des autorisations d'accès au compartiment S3.

Dans la console AWS Identity and Access Management (IAM), créez un rôle avec les autorisations et la relation de confiance suivantes. Lors de la création du rôle, choisissez S3 en tant que Service AWS . Nommez le rôle OpenSearchSnapshotRole pour qu'il soit facile à identifier.

Autorisations

JSON
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Relation d'approbation

JSON
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Ensuite, accordez à votre rôle IAM personnel les autorisations de prendre en charge OpenSearchSnapshotRole. Créez la stratégie suivante et attachez-la à votre identité :

Autorisations

JSON
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } ] }

Cartographier le rôle des instantanés dans OpenSearch les tableaux de bord (si vous utilisez un contrôle d'accès précis)

Si vous avez activé le contrôle d'accès précis, 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 afin d'utiliser des instantanés.

Pour accorder à votre identité les autorisations nécessaires pour utiliser des instantanés
  1. Connectez-vous aux tableaux de bord à l'aide des informations d'identification de l'utilisateur principal que vous avez spécifiées lors de la création du domaine OpenSearch de service. Vous trouverez l'URL des tableaux de bord dans la console de OpenSearch service. Elle prend la forme suivante : https://domain-endpoint/_dashboards/.

  2. Dans le menu principal, choisissez Sécurité, Rôles, puis sélectionnez le rôle manage_snapshots.

  3. Choisissez Mapped users (Utilisateurs mappés), Manage mapping (Gérer le mappage).

  4. Ajoutez l'ARN de domaine de votre rôle IAM personnel dans le champ approprié. L'ARN se présente dans l'un des formats suivants :

    arn:aws:iam::123456789123:user/user-name
    arn:aws:iam::123456789123:role/role-name
  5. Sélectionnez Map (Mapper) et vérifiez que le rôle s'affiche sous Mapped users (Utilisateurs mappés).

Restaurer l'instantané.

À ce stade, vous pouvez accéder à votre domaine de OpenSearch service de deux manières : l'authentification HTTP de base avec vos informations d'identification d'utilisateur principal ou l' AWS authentification à l'aide de vos informations d'identification IAM. Étant donné que les instantanés utilisent Amazon S3, qui n'a aucune notion d'utilisateur principal, vous devez utiliser vos informations d'identification IAM pour enregistrer le référentiel de clichés auprès de votre domaine de OpenSearch service.

La plupart des langages de programmation disposent de bibliothèques pour faciliter la signature des demandes, mais l'approche la plus simple consiste à utiliser un outil tel que Postman et à saisir vos informations d'identification IAM dans la section Autorisation.

Postman interface showing Authorization settings for AWS API request with Signature type.
Pour restaurer l'instantané
  1. Quelle que soit la manière dont vous choisissez de signer vos demandes, la première étape consiste à enregistrer le référentiel :

    PUT _snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "amzn-s3-demo-bucket", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } }
  2. Ensuite, répertoriez les instantanés dans le référentiel et identifiez celui que vous souhaitez restaurer. À ce stade, vous pouvez continuer à utiliser Postman ou opter pour un outil comme curl.

    Shorthand

    GET _snapshot/my-snapshot-repo-name/_all

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/_all
  3. Restaurez l'instantané.

    Shorthand

    POST _snapshot/my-snapshot-repo-name/my-snapshot-name/_restore { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }

    curl

    curl -XPOST -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/my-snapshot-name/_restore \ -H 'Content-Type: application/json' \ -d '{"indices":"migration-index1,migration-index2,other-indices-*","include_global_state":false}'
  4. Enfin, vérifiez que vos index sont restaurés comme prévu.

    Shorthand

    GET _cat/indices?v

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_cat/indices?v

À ce stade, la migration est terminée. Vous pouvez configurer vos clients pour qu'ils utilisent le nouveau point de terminaison du OpenSearch service, redimensionner le domaine en fonction de votre charge de travail, vérifier le nombre de partitions pour vos index, passer à un utilisateur principal IAM ou commencer à créer des visualisations dans les tableaux de bord. OpenSearch