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 OpenSearch Service
A pesquisa entre clusters do Amazon OpenSearch Service permite que você execute consultas e agregações entre 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 permitem 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 o OpenSearch Dashboards para que você possa criar visualizações e painéis em todos os seus domínios. Você paga taxas de transferência de dados padrão da AWS
nota
O OpenSearch de código aberto também tem documentação
Tópicos
Limitações
A pesquisa entre clusters tem várias limitações importantes:
-
Você não pode conectar um domínio do Elasticsearch a um domínio do OpenSearch.
-
Você não pode se conectar a clusters autogerenciados do OpenSearch/Elasticsearch.
-
Para conectar domínios entre regiões, ambos os domínios devem estar no Elasticsearch 7.10 ou posterior ou no 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 o 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 domínios do OpenSearch ou domínios do Elasticsearch na versão 6.7 ou posterior
-
Controle de acesso refinado habilitado
-
Criptografia de nó para nó habilitada
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.
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
-
No painel do domínio, escolha um domínio e escolha a guia Conexões.
-
Na seção Conexões de saída, escolha Solicitar.
-
Em Alias de conexão, insira um nome para a conexão.
-
Escolha entre conectar-se a um domínio na sua Conta da AWS e região ou em outra conta ou região.
-
Para se conectar a um cluster em sua região e Conta da AWS, selecione o domínio no menu suspenso e escolha Solicitação.
-
Para se conectar a um cluster em outra região ou Conta da AWS, especifique o ARN do domínio remoto e escolha Solicitação. Para conectar domínios entre regiões, ambos os domínios devem estar executando o Elasticsearch versão 7.10 ou posterior ou o OpenSearch.
-
-
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.
-
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
. -
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 paraActive
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.
-
No painel do domínio, selecione a guia Conexões.
-
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
-
Envie uma solicitação de pesquisa entre clusters para o domínio de origem.
-
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 dearn: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/*" } ] }
-
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õesread
ousearch
padrão para os índices relevantes. -
-
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 criptografia de nó para nó.
-
O domínio de destino executa a pesquisa e retorna os resultados para o domínio de origem.
-
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ê.
-
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ãocluster_b
edomain-a -> domain-c
com alias de conexãocluster_c
,domain-a
, pesquisedomain-b
edomain-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 Dashboards
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
.