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.
Recherche entre clusters dans Amazon Service OpenSearch
La recherche entre clusters dans Amazon OpenSearch Service vous permet d'effectuer des requêtes et des agrégations sur plusieurs domaines connectés. Il est souvent plus judicieux d'utiliser plusieurs petits domaines plutôt qu'un seul grand domaine, en particulier lorsque vous exécutez plusieurs types de charges de travail.
Les domaines spécifiques à la charge de travail vous permettent d'effectuer les tâches suivantes :
-
Optimiser chaque domaine en choisissant des types d'instance pour des charges de travail spécifiques.
-
Établir des limites d'isolement des pannes entre les charges de travail. Cela signifie que si l'une de vos charges de travail échoue, l'erreur est contenue dans ce domaine spécifique et n'a aucun impact sur vos autres charges de travail.
-
Passez plus facilement d'un domaine à l'autre.
La recherche entre clusters prend en charge les OpenSearch tableaux de bord, ce qui vous permet de créer des visualisations et des tableaux de bord pour tous vos domaines. Vous payez les frais de transfert de AWS données standard
Note
L'open source propose OpenSearch également une documentation
Rubriques
Limites
La recherche inter-clusters comporte plusieurs limitations importantes :
-
Vous ne pouvez pas connecter un domaine Elasticsearch à un OpenSearch domaine.
-
Vous ne pouvez pas vous connecter à des clusters OpenSearch /Elasticsearch autogérés.
-
Pour connecter des domaines entre différentes régions, les deux domaines doivent être sur Elasticsearch 7.10 ou version ultérieure ou. OpenSearch
-
Un domaine peut avoir un maximum de 20 connexions sortantes. De même, un domaine peut avoir un maximum de 20 connexions entrantes. En d'autres termes, un domaine peut se connecter à un maximum de 20 autres domaines.
-
Le domaine source doit se trouver sur une version identique ou supérieure à celle du domaine de destination. Si vous configurez une connexion bidirectionnelle entre deux domaines et que vous souhaitez mettre à niveau l'un d'entre eux ou les deux, vous devez d'abord supprimer l'une des connexions.
-
Vous ne pouvez pas utiliser de dictionnaires personnalisés ou SQL avec la recherche inter-clusters.
-
Vous ne pouvez pas l'utiliser AWS CloudFormation pour connecter des domaines.
-
Vous ne pouvez pas utiliser la recherche inter-clusters sur des instances M3 ou les instances extensibles (T2 et T3).
Conditions préalables à la recherche inter-clusters
Avant de configurer la recherche inter-clusters, assurez-vous que vos domaines répondent aux exigences suivantes :
-
Deux OpenSearch domaines, ou domaines Elasticsearch sur la version 6.7 ou ultérieure
-
Contrôle précis des accès activé
-
Aucun ode-to-node cryptage activé
Tarification de la recherche inter-clusters
Pas de frais supplémentaire pour les recherches entre domaines.
Configuration d'une connexion
Le domaine « source » fait référence au domaine duquel provient une demande de recherche inter-clusters. En d'autres termes, le domaine source est celui auquel vous envoyez la demande de recherche initiale.
Le domaine « destination » est le domaine interrogé par le domaine source.
Une connexion inter-clusters est unidirectionnelle depuis la source vers le domaine de destination. Cela signifie que le domaine de destination ne peut pas interroger le domaine source. Cependant, vous pouvez configurer une autre connexion dans la direction opposée.
Le domaine source crée une connexion « sortante » vers le domaine de destination. Le domaine de destination reçoit une demande de connexion « entrante » depuis le domaine source.
Configurer une connexion
-
Dans le tableau de bord de votre domaine, choisissez un domaine, puis accédez à l'onglet Connections (Connexions).
-
Dans la section Outbound Connections (Connexions sortantes), choisissez Request (Demande).
-
Dans Alias de la connexion, saisissez un nom pour votre connexion.
-
Choisissez entre vous connecter à un domaine dans votre Compte AWS région ou dans un autre compte ou région.
-
Pour vous connecter à un cluster dans votre Compte AWS région, sélectionnez le domaine dans le menu déroulant et choisissez Request.
-
Pour vous connecter à un cluster dans une autre région Compte AWS ou dans une autre région, sélectionnez l'ARN du domaine distant et choisissez Request. Pour connecter des domaines entre différentes régions, les deux domaines doivent exécuter Elasticsearch version 7.10 ou ultérieure ou. OpenSearch
-
-
Pour ignorer les clusters non disponibles pour les requêtes de cluster, sélectionnez Ignorer les clusters non disponibles. Ce paramètre garantit que vos requêtes inter-clusters renvoient des résultats partiels malgré les défaillances sur un ou plusieurs clusters distants.
-
La recherche inter-clusters valide d'abord la demande de connexion pour s'assurer que les conditions préalables sont remplies. Si les domaines s'avèrent incompatibles, la demande de connexion passera à l'état
Validation failed
. -
Une fois la demande de connexion validée avec succès, elle est envoyée au domaine de destination, où elle doit être approuvée. Tant que cette approbation n'a pas eu lieu, la connexion reste dans l'état
Pending acceptance
. Lorsque la demande de connexion sera acceptée au niveau du domaine de destination, l'état passera àActive
et le domaine de destination deviendra disponible pour les demandes.-
La page du domaine affiche l'état global du domaine et les détails de l'état de l'instance de votre domaine de destination. Seuls les propriétaires de domaines ont la possibilité de créer, de visualiser, de supprimer et de surveiller les connexions vers ou depuis leurs domaines.
-
Une fois la connexion établie, tout le trafic qui circule entre les nœuds des domaines connectés est chiffré. Si vous connectez un domaine VPC à un domaine non-VPC et que le domaine non-VPC est un point de terminaison public pouvant recevoir du trafic depuis Internet, le trafic inter-clusters entre les domaines est toujours chiffré et sécurisé.
Suppression d'une connexion
La suppression d'une connexion arrête toute opération intercluster sur ses index.
-
Dans le tableau de bord de votre domaine, accédez à l'onglet Connexions.
-
Sélectionnez les connexions de domaine que vous souhaitez supprimer et choisissez Delete (Supprimer), puis confirmez la suppression.
Vous pouvez effectuer ces étapes sur le domaine source ou de destination pour supprimer la connexion. Une fois la connexion supprimée, elle restera visible en état Deleted
pendant 15 jours.
Vous ne pouvez pas supprimer un domaine avec des connexions inter-clusters actives. Pour supprimer un domaine, commencez par supprimer toutes ses connexions entrantes et sortantes. Vous vous assurez ainsi de tenir compte des utilisateurs de domaines de clusters croisés avant de supprimer le domaine.
Configuration de la procédure de sécurité et d'exemples
-
Vous envoyez une demande de recherche inter-clusters vers le domaine source.
-
Le domaine source évalue cette demande en fonction de sa stratégie d'accès au domaine. Étant donné que la recherche inter-clusters nécessite un contrôle précis des accès, nous recommandons une stratégie d'accès ouvert sur le domaine source.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
Note
Si vous incluez des index distants dans le chemin, vous devez encoder l'URI en URL dans l'ARN du domaine. Par exemple, utilisez
arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index
plutôt quearn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index
.Si vous choisissez d'utiliser une stratégie d'accès restrictive en plus d'un contrôle précis des accès, votre politique doit autoriser l'accès
es:ESHttpGet
au minimum.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": "es:ESHttpGet", "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
-
Le Contrôle précis des accès sur le domaine source évalue la demande :
-
La demande est-elle signée avec des informations d'identification de base IAM ou HTTP valides ?
-
Si c'est le cas, l'utilisateur a-t-il l'autorisation d'effectuer la recherche et d'accéder aux données ?
Si la demande recherche uniquement des données sur le domaine de destination (par exemple,
dest-alias:dest-index/_search
), vous avez uniquement besoin d'autorisations sur le domaine de destination.Si la demande recherche des données sur les deux domaines (par exemple,
source-index,dest-alias:dest-index/_search
), vous avez besoin d'autorisations sur les deux domaines.Dans le cadre d'un contrôle d'accès précis, les utilisateurs doivent disposer de l'
indices:admin/shards/search_shards
autorisation en plus des autorisations standardread
ousearch
des autorisations pour les index concernés. -
-
Le domaine source transmet la demande au domaine de destination. Le domaine de destination évalue cette demande en fonction de sa stratégie d'accès au domaine. Vous devez inclure l'autorisation
es:ESCrossClusterGet
sur le domaine de destination :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }
Assurez-vous que l'autorisation
es:ESCrossClusterGet
est appliquée pour/dst-domain
et non pour/dst-domain/*
.Toutefois, cette politique minimale autorise uniquement les recherches inter-clusters. Pour effectuer d'autres opérations, notamment l'indexation de documents et l'exécution de recherches standard, vous avez besoin d'autorisations supplémentaires. Nous recommandons la politique suivante sur le domaine de destination :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/dst-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }
Note
Toutes les demandes de recherche entre clusters entre domaines sont cryptées en transit par défaut dans le cadre du node-to-node chiffrement.
-
Le domaine de destination effectue la recherche et renvoie les résultats au domaine source.
-
Le domaine source combine ses propres résultats (le cas échéant) avec ceux du domaine de destination et vous les renvoie.
-
Nous recommandons Postman
pour les demandes de test : -
Sur le domaine de destination, indexez un document :
POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
-
Pour interroger cet index à partir du domaine source, incluez l'alias de connexion du domaine de destination dans la requête.
GET https://src-domain.us-east-1.es.amazonaws.com/<connection_alias>:books/_search { ... "hits": [ { "_index": "source-destination:books", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "Dracula": "Bram Stoker" } } ] }
Vous trouverez l'alias de connexion dans l'onglet Connexions du tableau de bord de votre domaine.
-
Si vous configurez une connexion entre
domain-a -> domain-b
avec un alias de connexioncluster_b
etdomain-a -> domain-c
avec un alias de connexioncluster_c
, recherchezdomain-a
,domain-b
etdomain-c
comme suit :GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search { "query": { "match": { "user": "domino" } } }
Réponse
{ "took": 150, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0, "skipped": 0 }, "_clusters": { "total": 3, "successful": 3, "skipped": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "local_index", "_type": "_doc", "_id": "0", "_score": 1, "_source": { "user": "domino", "message": "Lets unite the new mutants", "likes": 0 } }, { "_index": "cluster_b:b_index", "_type": "_doc", "_id": "0", "_score": 2, "_source": { "user": "domino", "message": "I'm different", "likes": 0 } }, { "_index": "cluster_c:c_index", "_type": "_doc", "_id": "0", "_score": 3, "_source": { "user": "domino", "message": "So am I", "likes": 0 } } ] } }
Si vous n'avez pas choisi d'ignorer les clusters non disponibles dans la configuration de votre connexion, tous les clusters de destination que vous recherchez doivent être disponibles pour que votre demande de recherche s'exécute correctement. Sinon, la requête entière échoue. Même si l'un des domaines n'est pas disponible, aucun résultat de recherche n'est renvoyé.
-
OpenSearch Tableaux de bord
Vous pouvez visualiser les données de plusieurs domaines connectés de la même manière qu'à partir d'un seul domaine, sauf que vous devez accéder aux index distants à l'aide de connection-alias:index
. Donc, votre modèle d'index doit correspondre à connection-alias:index
.