Tutoriel : Migration vers AmazonOpenSearchService - 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 AmazonOpenSearchService

Les instantanés d'index constituent un moyen courant de migrer depuis un système autogéréOpenSearchou un ancien cluster Elasticsearch vers AmazonOpenSearchUn service. 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 unOpenSearchDomaine du service.

  3. DonnezOpenSearchAccordez les autorisations nécessaires pour accéder au bucket et assurez-vous que vous êtes autorisé à travailler avec des instantanés.

  4. Restaurez l'instantané surOpenSearchDomaine du 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, modifier opensearch.yml (ou elasticsearch.yml si vous utilisez un cluster Elasticsearch), redémarrer chaque nœud et ajouter vos informations d'identification AWS avant de pouvoir créer l'instantané. Le plug-in est une excellente option pour une utilisation continue ou pour la migration de clusters plus volumineux.

Pour les clusters de petite taille, une approche ponctuelle consiste à créer un instantané du système de fichiers partagé puis à utiliser l'AWS CLI pour le 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://bucket-name --region us-west-2 aws s3 sync . s3://bucket-name --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 l'AWS CLI est déjà installée. 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 leOpenSearchConsole 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 choseRégion AWSque vous avez utilisé pour le compartiment S3 et unOpenSearch/Version d'Elasticsearch 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'unOpenSearch1.xcluster sur un Elasticsearch 7.xcluster, uniquement unOpenSearch1.xou 2.xcluster. La version mineure compte aussi. Vous ne pouvez pas restaurer un instantané à partir d'un cluster 5.3.3 autogéré sur un cluster 5.3.2OpenSearchDomaine du service. Nous vous recommandons de choisir la version la plus récente deOpenSearchou Elasticsearch compatible avec 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 d'approbation 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

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

Relation d'approbation

{ "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

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

Mappez le rôle du snapshot dansOpenSearchTableaux de bord (si vous utilisez un contrôle d'accès détaillé)

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 duOpenSearchDomaine du service. Vous pouvez trouver l'URL des tableaux de bord dansOpenSearchConsole de 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 à votreOpenSearchDomaine de service : authentification de base HTTP avec vos informations d'identification d'utilisateur principal ouAWSauthentification à l'aide de vos informations d'identification IAM. Étant donné que les instantanés utilisent Amazon S3, qui ne définit pas l'utilisateur principal, vous devez utiliser vos informations d'identification IAM pour enregistrer le référentiel d'instantanés auprès de votreOpenSearchDomaine du service.

La plupart des langages de programmation disposent de bibliothèques pour faciliter les demandes de signature, mais l'approche la plus simple consiste à utiliser un outil tel quepostieret saisissez vos informations d'identification IAM dansAutorisationsection.

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": "bucket-name", "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 nouveauOpenSearchPoint de terminaison du service,redimensionner le domaineen fonction de votre charge de travail, vérifiez le nombre de partitions pour vos index, passez à unUtilisateur principal IAM, ou commencez à créer des visualisations dansOpenSearchTableaux de bord.