Ricerca tra cluster in Amazon Service OpenSearch - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ricerca tra cluster in Amazon Service OpenSearch

La ricerca tra cluster in Amazon OpenSearch Service ti consente di eseguire query e aggregazioni su più domini connessi. Spesso ha più senso utilizzare più domini più piccoli invece di un singolo dominio di grandi dimensioni, soprattutto quando si eseguono diversi tipi di carichi di lavoro.

I domini specifici del carico di lavoro consentono di completare le seguenti attività:

  • Ottimizzare ogni dominio scegliendo i tipi di istanza per carichi di lavoro specifici.

  • Stabilire i limiti di isolamento del guasto tra i carichi di lavoro. Ciò significa che se uno dei carichi di lavoro genera errori, il guasto è contenuto all'interno di quel dominio specifico e non influisce sugli altri carichi di lavoro.

  • Scalabilità più semplice tra domini.

La ricerca tra cluster supporta OpenSearch le dashboard, quindi puoi creare visualizzazioni e dashboard in tutti i tuoi domini. Paghi le tariffe standard per il trasferimento AWS dei dati per i risultati di ricerca trasferiti tra domini.

Nota

L'open source dispone OpenSearch anche di documentazione per la ricerca tra cluster. La configurazione differisce notevolmente per i cluster open source rispetto ai domini Amazon OpenSearch Service gestiti. In particolare, in OpenSearch Service, si configurano le connessioni tra cluster utilizzando cURL AWS Management Console anziché tramite cURL. Inoltre, il servizio gestito utilizza AWS Identity and Access Management (IAM) per l'autenticazione tra cluster oltre al controllo granulare degli accessi. Pertanto, consigliamo di utilizzare questa documentazione, anziché la documentazione open source, per configurare la OpenSearch ricerca tra cluster per i domini.

Limitazioni

La ricerca tra cluster presenta diverse limitazioni importanti:

  • Non puoi connettere un dominio Elasticsearch a un dominio. OpenSearch

  • Non puoi connetterti a cluster /Elasticsearch OpenSearch autogestiti.

  • Per connettere domini tra regioni, entrambi i domini devono essere su Elasticsearch 7.10 o versione successiva oppure. OpenSearch

  • Un dominio può avere un massimo di 20 connessioni in uscita. Analogamente, un dominio può avere un massimo di 20 connessioni in ingresso. In altre parole, un dominio può connettersi a un massimo di 20 altri domini.

  • Il dominio di origine deve avere la stessa versione o una versione successiva del dominio di destinazione. Se configuri una connessione bidirezionale tra due domini e desideri aggiornarne uno o entrambi, devi prima eliminare una delle connessioni.

  • Non è possibile utilizzare dizionari personalizzati o SQL con la ricerca tra cluster.

  • Non puoi utilizzare AWS CloudFormation per connettere domini.

  • Non è possibile utilizzare la ricerca tra cluster su istanze M3 o istanze espandibili (T2 e T3).

Prerequisiti di ricerca tra cluster

Prima di configurare la ricerca tra cluster, assicurarsi che i domini soddisfino i seguenti requisiti:

  • Due OpenSearch domini o domini Elasticsearch nella versione 6.7 o successiva

  • Controllo granulare degli accessi abilitato

  • Nessuna crittografia abilitata ode-to-node

Prezzi della funzionalità di ricerca tra cluster

Non è previsto alcun costo aggiuntivo per la ricerca tra domini.

Configurazione di una connessione

Il dominio "di origine" si riferisce al dominio da cui proviene una richiesta di ricerca tra cluster. In altre parole, il dominio di origine è quello a cui si invia la richiesta iniziale di ricerca.

Il dominio "di destinazione" è il dominio sul quale il dominio di origine esegue le query.

Una connessione tra cluster è unidirezionale dall'origine al dominio di destinazione. Ciò significa che il dominio di destinazione non può eseguire query sul dominio di origine. Tuttavia, è possibile impostare un'altra connessione nella direzione opposta.

Flusso di autorizzazione di ricerca tra cluster

Il dominio di origine crea una connessione "in uscita" al dominio di destinazione. Il dominio di destinazione riceve una richiesta di connessione "in ingresso" dal dominio di origine.

Per impostare una connessione
  1. Nel pannello di controllo del dominio scegliere un dominio e selezionare la scheda Connessioni.

  2. Nella sezione Connessioni in uscita scegli Richiesta.

  3. Per Alias di connessione, specifica un nome per la connessione.

  4. Scegli se connetterti a un dominio nella tua Account AWS regione o in un altro account o regione.

    • Per connetterti a un cluster nella tua regione Account AWS e nella tua regione, seleziona il dominio dal menu a discesa e scegli Richiedi.

    • Per connetterti a un cluster in un'altra regione Account AWS o in un'altra regione, seleziona l'ARN del dominio remoto e scegli Richiesta. Per connettere domini tra regioni, entrambi i domini devono eseguire Elasticsearch versione 7.10 o successiva oppure. OpenSearch

  5. Per ignorare i cluster non disponibili per le query sui cluster, seleziona Ignora non disponibile. Questa impostazione garantisce che le query tra cluster restituiscano risultati parziali nonostante gli errori su uno o più cluster remoti.

  6. La ricerca tra cluster convalida innanzitutto la richiesta di connessione per assicurare che i prerequisiti siano soddisfatti. Se i domini risultano incompatibili, la richiesta di connessione entra nello stato Validation failed.

  7. Dopo che la richiesta di connessione è stata convalidata correttamente, viene inviata al dominio di destinazione, dove deve essere approvata. Fino a quando non si avviene questa approvazione, la connessione rimane in uno stato Pending acceptance. Quando la richiesta di connessione viene accettata nel dominio di destinazione, lo stato cambia in Active e il dominio di destinazione diventa disponibile per le query.

    • La pagina del dominio mostra i dettagli generali dello stato del dominio e dello stato dell'istanza del dominio di destinazione. Solo i proprietari dei domini dispongono della flessibilità necessaria per creare, visualizzare, rimuovere e monitorare le connessioni da o verso i propri domini.

Dopo aver stabilito la connessione, tutto il traffico che passa tra i nodi dei domini connessi viene crittografato. Se si connette un dominio VPC a un dominio non VPC e il dominio non VPC è un endpoint pubblico in grado di ricevere traffico da Internet, il traffico tra cluster tra i domini è ancora crittografato e protetto.

Rimozione di una connessione

La rimozione di una connessione interrompe qualsiasi operazione tra cluster sui relativi indici.

  1. Nel pannello di controllo del dominio, passa alla scheda Connessioni.

  2. Selezionare le connessioni di dominio che si desidera rimuovere e scegliere Elimina, quindi confermare l'eliminazione.

È possibile eseguire queste operazioni sul dominio di origine o di destinazione per rimuovere la connessione. Dopo aver rimosso la connessione, questa sarà ancora visibile con lo stato Deleted per altri 15 giorni.

Non è possibile eliminare un dominio con connessioni tra cluster attive. Per eliminare un dominio, rimuovere innanzitutto tutte le connessioni in ingresso e in uscita da tale dominio. Questo per essere certi di considerare gli utenti del dominio tra cluster prima di eliminare il dominio.

Configurazione della sicurezza e spiegazione passo per passo di esempio

  1. Si invia una richiesta di ricerca tra cluster al dominio di origine.

  2. Il dominio di origine valuta tale richiesta in base alla policy di accesso al dominio. Poiché la ricerca tra cluster richiede un controllo di accesso granulare, è consigliabile una policy di accesso aperta nel dominio di origine.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
    Nota

    Se includi indici remoti nel percorso, devi codificare in formato URL l'URI nell'ARN del dominio. Ad esempio, utilizzare arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index anziché arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index.

    Se si sceglie di utilizzare una policy di accesso restrittiva oltre al controllo di accesso granulare, la policy deve consentire l'accesso almeno a es:ESHttpGet.

    { "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/*" } ] }
  3. Ilcontrollo di accesso granulare nel dominio di origine valuta la richiesta:

    • La richiesta è firmata con credenziali di base IAM o HTTP valide?

    • In tal caso, l'utente dispone dell'autorizzazione per eseguire la ricerca e accedere ai dati?

    Se la richiesta ricerca solo i dati nel dominio di destinazione, ad esempio dest-alias:dest-index/_search, sono necessarie solo le autorizzazioni per il dominio di destinazione.

    Se la richiesta cerca dati su entrambi i domini, ad esempio source-index,dest-alias:dest-index/_search, sono necessarie le autorizzazioni per entrambi i domini.

    Nel controllo granulare degli accessi, gli utenti devono disporre dell'indices:admin/shards/search_shardsautorizzazione oltre alle autorizzazioni standard read o search alle autorizzazioni per gli indici pertinenti.

  4. Il dominio di origine invia la richiesta al dominio di destinazione. Il dominio di destinazione valuta la richiesta in base alla policy di accesso al dominio. È necessario includere l'autorizzazione es:ESCrossClusterGet per il dominio di destinazione:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }

    Assicurarsi che l'autorizzazione es:ESCrossClusterGet sia applicata per /dst-domain e non per /dst-domain/*.

    Tuttavia, questo policy minima consente solo ricerche tra cluster. Per eseguire altre operazioni, ad esempio l'indicizzazione dei documenti e l'esecuzione di ricerche standard, sono necessarie ulteriori autorizzazioni. Si consiglia la seguente policy per il dominio di destinazione:

    { "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" } ] }
    Nota

    Per impostazione predefinita, tutte le richieste di ricerca intercluster tra domini vengono crittografate in transito come parte della crittografia. node-to-node

  5. Il dominio di destinazione esegue la ricerca e restituisce i risultati al dominio di origine.

  6. Il dominio di origine combina i propri risultati (se presenti) con i risultati del dominio di destinazione e li restituisce all'utente.

  7. Consigliamo Postman per le richieste di test:

    • Nel dominio di destinazione, indicizzare un documento:

      POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
    • Per eseguire una query su questo indice dal dominio di origine, includere l'alias di connessione del dominio di destinazione all'interno della query.

      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" } } ] }

      È possibile trovare l'alias di connessione nella scheda Connessioni nel pannello di controllo del dominio.

    • Se si imposta una connessione tra domain-a -> domain-b con l'alias di connessione cluster_b e domain-a -> domain-c con l'alias di connessione cluster_c, ricercare domain-a, domain-b e domain-c come segue:

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

      Risposta

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

      Se non hai scelto di ignorare i cluster non disponibili nella configurazione della connessione, tutti i cluster di destinazione che cerchi devono essere disponibili affinché la richiesta di ricerca venga eseguita correttamente. In caso contrario, l'intera richiesta avrà esito negativo: anche se uno dei domini non è disponibile non verrà restituito alcun risultato della ricerca.

OpenSearch Dashboard

È possibile visualizzare i dati di più domini connessi nello stesso modo di un singolo dominio, tranne per il fatto che è necessario accedere agli indici remoti utilizzando connection-alias:index. Quindi, il modello di indice deve corrispondere a connection-alias:index.