Pesquisa entre clusters no Amazon Service OpenSearch - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Pesquisa entre clusters no Amazon Service OpenSearch

A pesquisa entre clusters no Amazon OpenSearch Service permite que você realize consultas e agregações em vários domínios conectados. Muitas vezes, faz mais sentido usar vários domínios menores em vez de um único domínio grande, principalmente quando você está executando diferentes tipos de workloads.

Os domínios específicos de workloads spermitem executar as seguintes tarefas:

  • Otimizar cada domínio escolhendo tipos de instância para workloads específicas.

  • Estabelecer limites de isolamento de falhas entre workloads. Isso significa que, se uma de suas workloads falhar, a falha estará contida nesse domínio específico e não afetará as outras workloads.

  • Dimensionar mais facilmente entre domínios.

A pesquisa entre clusters é compatível com OpenSearch painéis, para que você possa criar visualizações e painéis em todos os seus domínios. Você paga taxas padrão AWS de transferência de dados pelos resultados de pesquisa transferidos entre domínios.

Limitações

A pesquisa entre clusters tem várias limitações importantes:

  • Você não pode conectar um domínio do Elasticsearch a um OpenSearch domínio.

  • Você não pode se conectar a clusters OpenSearch autogerenciados/Elasticsearch.

  • Para conectar domínios entre regiões, ambos os domínios devem estar no Elasticsearch 7.10 ou posterior ou. OpenSearch

  • Um domínio pode ter um máximo de 20 conexões de saída. Da mesma forma, um domínio pode ter um máximo de 20 conexões de entrada. Em outras palavras, um domínio pode se conectar a um máximo de 20 outros domínios.

  • O domínio de origem deve estar na mesma versão ou em uma versão superior à do domínio de destino. Se você configurar uma conexão bidirecional entre dois domínios e quiser atualizar um ou ambos, primeiro exclua uma das conexões.

  • Não é possível usar dicionários personalizados ou o SQL com a pesquisa entre clusters.

  • Você não pode usar AWS CloudFormation para conectar domínios.

  • Não é possível usar a pesquisa entre clusters em instâncias M3 ou expansíveis (T2 e T3).

Pré-requisitos da pesquisa entre clusters

Antes de configurar a pesquisa entre clusters, verifique se os domínios atendem aos seguintes requisitos:

  • Dois OpenSearch domínios ou domínios do Elasticsearch na versão 6.7 ou posterior

  • Controle de acesso refinado habilitado

  • Nenhuma ode-to-node criptografia ativada

Preços da pesquisa entre clusters

Não há custo adicional para a pesquisa entre domínios.

Configuração de uma conexão

O domínio de “origem” refere-se ao domínio no qual uma solicitação de pesquisa entre clusters se origina. Ou seja, o domínio de origem é aquele para o qual você envia a solicitação de pesquisa inicial.

O domínio de “destino” é aquele que o domínio de origem consulta.

Uma conexão entre clusters é unidirecional do domínio de origem para o domínio de destino. Isso significa que o domínio de destino não pode consultar o domínio de origem. No entanto, você pode configurar outra conexão na direção oposta.


        Fluxo de autorização de pesquisa entre clusters

O domínio de origem cria uma conexão de “saída” com o domínio de destino. O domínio de destino recebe uma solicitação de conexão de “entrada” do domínio de origem.

Como configurar uma conexão
  1. No painel do domínio, escolha um domínio e escolha a guia Conexões.

  2. Na seção Conexões de saída, escolha Solicitar.

  3. Em Alias de conexão, insira um nome para a conexão.

  4. Escolha entre se conectar a um domínio em sua Conta da AWS região ou em outra conta ou região.

    • Para se conectar a um cluster em sua Conta da AWS região, selecione o domínio no menu suspenso e escolha Solicitar.

    • Para se conectar a um cluster em outra região Conta da AWS ou região, selecione o ARN do domínio remoto e escolha Solicitar. Para conectar domínios entre regiões, ambos os domínios devem estar executando a versão 7.10 ou posterior do Elasticsearch ou. OpenSearch

  5. Para ignorar clusters indisponíveis para consultas de cluster, selecione Ignorar indisponíveis. Essa configuração garante que suas consultas entre clusters retornem resultados parciais, apesar de falhas em um ou mais clusters remotos.

  6. A pesquisa entre clusters primeiro valida a solicitação de conexão para ter certeza de que os pré-requisitos são atendidos. Se os domínios forem considerados incompatíveis, a solicitação de conexão entrará no estado Validation failed.

  7. Depois que a solicitação de conexão é validada com êxito, ela é enviada para o domínio de destino, onde precisa ser aprovada. Até que essa aprovação aconteça, a conexão permanecerá em um estado Pending acceptance. Quando a solicitação de conexão é aceita no domínio de destino, o estado muda para Active e o domínio de destino torna-se disponível para consultas.

    • A página de domínio mostra os detalhes gerais da integridade do domínio e da instância do domínio de destino. Os proprietários de domínios têm a flexibilidade de criar, visualizar, remover e monitorar conexões de saída e de entrada de seus domínios.

Depois que a conexão é estabelecida, qualquer tráfego que flua entre os nós dos domínios conectados é criptografado. Se você conectar um domínio da VPC a um domínio que não seja de VPC e o domínio de não VPC for um endpoint público que pode receber tráfego da Internet, o tráfego entre clusters entre os domínios ainda será criptografado e seguro.

Remoção de uma conexão

A remoção de uma conexão interrompe qualquer operação entre clusters em seus índices.

  1. No painel do domínio, selecione a guia Conexões.

  2. Selecione as conexões de domínio a serem removidas e escolha Excluir. Em seguida, confirme a exclusão.

Você pode executar essas etapas no domínio de origem ou de destino para remover a conexão. Depois que a conexão é removida, ela permanece visível com o status Deleted por um período de 15 dias.

Não é possível excluir um domínio com conexões ativas entre clusters. Para excluir um domínio, primeiro remova todas as conexões de entrada e saída desse domínio. Isso garante que você leve em consideração os usuários de domínio entre clusters antes de excluir o domínio.

Configuração da segurança e demonstração de exemplo

  1. Envie uma solicitação de pesquisa entre clusters para o domínio de origem.

  2. O domínio de origem avalia essa solicitação em relação à política de acesso ao domínio. Como a pesquisa entre clusters requer controle de acesso refinado, recomendamos uma política de acesso aberto no domínio de origem.

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

    Se você incluir índices remotos no caminho, deverá codificar em URL o URI no ARN do domínio. Por exemplo, use arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index em vez de arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index.

    Se você optar por usar uma política de acesso restritiva além do controle de acesso refinado, sua política deverá permitir o acesso, no mínimo, ao 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. O controle de acesso refinado no domínio de origem avalia a solicitação:

    • A solicitação é assinada com credenciais básicas do IAM ou HTTP válidas?

    • Em caso afirmativo, o usuário tem permissão para realizar a pesquisa e acessar os dados?

    Se a solicitação pesquisar dados somente no domínio de destino (por exemplo, dest-alias:dest-index/_search), você só precisará de permissões no domínio de destino.

    Se a solicitação pesquisar dados nos dois domínios (por exemplo, source-index,dest-alias:dest-index/_search), você precisará de permissões nos dois domínios.

    No controle de acesso refinado, os usuários devem ter a permissão indices:admin/shards/search_shards além das permissões read ou search padrão para os índices relevantes.

  4. O domínio de origem passa a solicitação para o domínio de destino. O domínio de destino avalia essa solicitação em relação à política de acesso ao domínio. Você deve incluir a permissão es:ESCrossClusterGet no domínio de destino:

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

    Verifique se a permissão es:ESCrossClusterGet é aplicada a /dst-domain e não a /dst-domain/*.

    No entanto, essa política mínima só permite pesquisas entre clusters. Para executar outras operações, como indexar documentos e executar pesquisas padrão, você precisa de permissões adicionais. Recomendamos a seguinte política no domínio de destino:

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

    Todas as solicitações de pesquisa entre clusters entre domínios são criptografadas em trânsito por padrão como parte da node-to-node criptografia.

  5. O domínio de destino executa a pesquisa e retorna os resultados para o domínio de origem.

  6. O domínio de origem combina seus próprios resultados (se houver) com os resultados do domínio de destino e os retorna para você.

  7. Recomendamos o Postman para solicitações de teste:

    • No domínio de destino, indexe um documento:

      POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
    • Para consultar esse índice do domínio de origem, inclua o alias de conexão do domínio de destino dentro da consulta.

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

      Você pode encontrar o alias de conexão na guia Conexões no painel do domínio.

    • Se você configurar uma conexão entre domain-a -> domain-b com alias de conexão cluster_b e domain-a -> domain-c com alias de conexão cluster_c, domain-a, pesquise domain-b e domain-c da seguinte forma:

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

      Resposta

      { "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 você não optou por ignorar clusters indisponíveis na sua configuração de conexão, todos os clusters de destino na sua pesquisa precisam estar disponíveis para que sua solicitação de pesquisa seja executada com êxito. Caso contrário, toda a solicitação falhará — mesmo que um dos domínios não esteja disponível, nenhum resultado da pesquisa será retornado.

OpenSearch Painéis

Você pode visualizar dados de vários domínios conectados da mesma maneira que de um único domínio, exceto que você deve acessar os índices remotos usando connection-alias:index. Portanto, o padrão de índice deve corresponder a connection-alias:index.