Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Implemente o MongoDB Search e o Vector Search

Você pode implementar o MongoDB Search e o Vector Search em seu cluster Kubernetes para criar experiências de pesquisa avançadas diretamente em seus aplicativos. Usando o MongoDB Search e o Vector Search , você pode criar recursos de pesquisa de texto tradicional e pesquisa vetorial baseados em IA que são sincronizados automaticamente com um banco de dados MongoDB local. Isso elimina a necessidade de manter sistemas separados sincronizados e, ao mesmo tempo, fornecer recursos avançados de pesquisa. Para saber mais, consulte:

Para habilitar as funcionalidades de pesquisa, como pesquisa de texto completo e pesquisa semântica em sistemas locais, você deve implantar o processo de MongoDB Search e pesquisa vetorial (mongot) e conectá-lo à implantação de banco de dados MongoDB (mongod). A implantação do mongot é opcional e é necessária somente se você planeja usar os recursos de pesquisa que ela oferece.

Os processos do Banco de Dados MongoDB (mongod) atuam como o proxy para todas as queries de pesquisa para mongot. O mongod encaminha a consulta para mongot, que processa a consulta. O mongot retorna os resultados da query para o mongod, que encaminha os resultados para você. Você nunca interage diretamente com o mongot.

Cada processo do mongot tem seu próprio volume persistente que não é compartilhado com o banco de dados ou outros nós de pesquisa. O armazenamento é usado para manter índices que são criados a partir dos dados obtidos continuamente do banco de dados. As definições do índice (metadados) são armazenadas no próprio banco de dados .

O mongot executa as seguintes ações:

  • Gerencia o índice.

    O mongot é responsável por atualizar as definições de índice no banco de dados.

  • Obtém os dados do banco de dados.

    Os nós do mongot estabelecem conexões permanentes com o banco de dados para atualizar índices do banco de dados em tempo real.

  • Processa queries de pesquisa.

    Quando mongod recebe uma query $search, $searchMeta, ou $vectorSearch, ele direciona a query para um dos nós mongot. O mongot que recebe a query processa a query, agrega os dados e retorna os resultados para mongod, que encaminha ao usuário.

Os componentes do mongot são fortemente associados a um único conjunto de réplicas MongoDB e não podem ser compartilhados entre vários bancos de dados ou conjuntos de réplicas. Para uma implantação de conjunto de réplicas, um grupo de nós de pesquisa dedicados atende ao conjunto de réplicas. Para um cluster fragmentado, cada fragmento mantém seu próprio grupo independente de mongot nós. Os fragmentos não compartilham instâncias mongot.

A conectividade de rede entre mongot e mongod vai em ambas as direções:

  • mongot estabelece conexão com o conjunto de réplicas para obter os dados usados para construir índices e executar query.

  • mongod conecta-se ao mongot para encaminhar operações relacionadas à pesquisa, como gerenciamento de índice e consulta de dados.

O campo spec.replicas controla quantas instâncias do mongot o Operador Kubernetes implanta. Para uma origem do conjunto de réplicas, o spec.replicas define o número total de pods do mongot. Para uma origem de cluster fragmentado, spec.replicas define o número de mongot pods por fragmento.

Se você definir spec.replicas como um valor maior que 1, deverá colocar um balanceador de carga L7 entre mongod e os pods mongot. O processo mongod abre uma única conexão TCP de longa duração para mongot, portanto, um balanceador de carga L4 não pode distribuir queries em várias instâncias mongot — todo o tráfego flui por essa conexão. Um balanceador de carga L7 entende HTTP/2 e gRPC, o que lhe permite distribuir fluxos gRPC individuais em pods mongot enquanto fixa cada fluxo em um único mongot durante o cursor de query.

Não há muitas diferenças entre a arquitetura de implantação de pesquisa com ou sem o Kubernetes Operator. O Operador Kubernetes simplifica as etapas necessárias para distribuir nós de pesquisa totalmente funcionais, especialmente quando o banco de dados também é gerenciado pelo Operador Kubernetes.

Para implantar, você aplica o MongoDBSearch Custom recurso (CR), que o Operador do Kubernetes pega e começa a distribuir mongot pods e solicita armazenamento persistente especificado no spec. O MongoDB Search e a pesquisa vetorial implementados por meio do Kubernetes operador podem direcionar um conjunto de réplicas do MongoDB ou um cluster implantado pelo Kubernetes operador dentro do mesmo cluster do Kubernetes, ou uma implantação externa completamente independente do MongoDB (conjunto de réplicas ou cluster). Para aprender como implantar e configurar o mongot para usar:

  • Um conjunto de réplicas do MongoDB no Kubernetes, consulte Instalar e usar com o MongoDB Community Edition ou Instalar e usar a pesquisa com o MongoDB Enterprise Edition

  • Para definir um conjunto de réplicas do MongoDB externo, consulte Instalar e usar o MongoDB Search e o Vector Search com o MongoDB Enterprise Edition.

Para usar o MongoDB Search e a pesquisa vetorial em seu:

  • A implantação da MongoDB Community , você deve ter um MongoDB 8.2 totalmente funcional ou posterior conjunto de réplicas ou cluster fragmentado implantado dentro de um cluster Kubernetes usando o Operador Kubernetes.

  • A implantação do MongoDB Enterprise , você deve ter um conjunto de réplicas totalmente funcional do MongoDB 8.2 ou posterior ou um cluster fragmentado implantado de uma das seguintes maneiras:

    • Dentro de um cluster Kubernetes usando o Operador Kubernetes

    • Fora de um cluster Kubernetes

  • Instância do Cloud Manager ou do Ops Manager

Antes de começar, considere o seguinte:

A tabela a seguir mostra as tarefas de configuração que o Kubernetes Operator executa automaticamente e as ações que você deve executar para implantar com êxito o MongoDB Search e a pesquisa vetorial no Kubernetes e conectar-se a um conjunto de réplicas do MongoDB ou cluster no Kubernetes ou a uma implantação externa do MongoDB.

Tarefa
(Inside Kubernetes)
Performed by
(External MongoDB)
Performed by

Implemente o Ops Manager dentro do Kubernetes

Kubernetes Operator

Kubernetes Operator

Implemente o Cloud Manager ou o Ops Manager fora do Kubernetes

você

você

Distribua o conjunto de réplicas do MongoDB ou o cluster fragmentado

Kubernetes Operator

você

Criar recurso personalizado do MongoDBSearch

você

você

Fornecer string de conexão para a implantação do MongoDB

Kubernetes Operator

você

Criar YAMLde configuração mongot

Kubernetes Operator

Kubernetes Operator

Definir os parâmetros necessários do conjunto de réplicas em cada processo mongod

Kubernetes Operator

você

Criar usuário para mongot com função searchCoordinator

Kubernetes Operator e você aplicando o recurso MongoDBUser

você

Configurar conjunto de réplicas do MongoDB com um usuário que tenha as permissões necessárias para consultar a pesquisa

você

você

Criar índices de MongoDB Search e Vector Search

você

você

Exponha pods de pesquisa ou balanceador de carga externamente para conectar a partir de cada nó mongod

Não necessário

você

Exponha mongod pods externamente para conexão a partir de mongot nós

Não necessário

você

Configurar balanceador de carga gerenciado (quando spec.replicas é maior que 1)

Kubernetes Operator

Kubernetes Operator

Configurar balanceador de carga não gerenciado (quando spec.replicas é maior que 1)

você

você

Provisionar certificados TLS por fragmento (clusters fragmentados com TLS)

você

você

Expor o balanceador de carga externamente ( MongoDB externo + LS gerenciado)

Não necessário

você

A imagem seguinte ilustra a configuração de segurança para o processo do mongot. Se o servidor MongoDB estiver dentro do cluster do Kubernetes, o operador Kubernetes configurará automaticamente a autenticação de arquivo de chave para a pesquisa MongoDB e a pesquisa vetorial. Se o servidor MongoDB for externo, você deverá criar um Kubernetes Secret contendo a credencial de arquivo de chave do conjunto de réplica e referenciá-lo no MongoDBSearch CR.

Diagrama mostrando a autenticação do arquivo-chave e a configuração do TLS para pesquisa.
clique para ampliar

O processo do mongot autentica conexões do mongod utilizando mTLS. Quando você habilita o TLS, o processo mongot usa o certificado TLS do servidor MongoDB como certificado do cliente para autenticação. Este certificado é verificado em relação ao certificado CA com o qual o mongot está configurado. Para que a autenticação funcione corretamente, você deve configurar mongot e mongod com o TLS habilitado.

Quando configurado para indexar um recurso MongoDB no mesmo cluster do Kubernetes, o operador do Kubernetes propaga automaticamente o certificado CA do mongod para mongot e habilita o mTLS para conexões de query de pesquisa se os recursos do MongoDB e MongoDBSearch estiverem configurados para TLS. Se o conjunto de réplicas do MongoDB for implantado fora do Kubernetes, você deverá criar um segredo do Kubernetes contendo o certificado CA do conjunto de réplicas e referenciá-lo no campo MongoDBSearch.spec.source.external.tls.ca para habilitar a autenticação mTLS para solicitações de query de pesquisa.

O MongoDBSearch pode proteger dados e credenciais em trânsito usando TLS. Para comandos de gerenciamento de índice e query de pesquisa, defina o campo spec.security.tls e forneça um certificado TLS. Você pode definir esse campo como um objeto vazio ({}) para habilitar o TLS com as configurações padrão.

Descontinuado desde a versão 1.8.0: spec.security.tls.certificateKeySecretRef está obsoleto. Para implantações de conjunto de réplicas, o Operador Kubernetes ainda suporta certificateKeySecretRef, mas você deve migrar para spec.security.tls.certsSecretPrefix. Para sistemas de cluster fragmentado, você não pode usar certificateKeySecretRef porque o Kubernetes operador lê um segredo de certificado de servidor mongot separado para cada fragmento.

spec.security.tls.certsSecretPrefix é um campo opcional. Quando você o especifica, o Kubernetes Operator acrescenta <certsSecretPrefix>- a todos os nomes secretos de certificado que lê. O Operador do Kubernetes lê os seguintes segredos de certificado:

Topologia de cluster
mongot Certificado

réplicaSet

[<certsSecretPrefix>-]<name>-search-cert

cluster fragmentado

[<certsSecretPrefix>-]<name>-search-0-<shardName>-cert (per shard)

Se você definir spec.loadBalancer.managed, o certificado do cliente do balanceador de carga será [<certsSecretPrefix>-]<name>-search-lb-0-client-cert. A tabela a seguir mostra os certificados de servidor do balanceador de carga:

Topologia de cluster
Certificado

réplicaSet

[<certsSecretPrefix>-]<name>-search-lb-0-cert

cluster fragmentado

[<certsSecretPrefix>-]<name>-search-lb-0-<shardName>-cert

O certificado TLS deve ser emitido e assinado pela mesma CA que emitiu o certificado CA que o conjunto de réplicas MongoDB utiliza.

Quando MongoDBSearch e MongoDB são implantados pelo Operador Kubernetes, a configuração subjacente do mongot e mongod é em grande parte manipulada pelo próprio Operador Kubernetes. Se você implantar o conjunto de réplicas do MongoDB fora do cluster do Kubernetes:

  • .spec.source.external.tls o campo deve ser preenchido com um secret do Kubernetes contendo o mesmo certificado CA que você usou para configurar o mongod.

  • searchTLSMode O parâmetro deve ser definido como requireTLS na configuração mongod.

Sem um balanceador de carga, o mongod conecta diretamente ao mongot utilizando mTLS. O mongod apresenta seu próprio certificado de cliente e o mongot o valida em relação a uma CA confiável.

Se você configurar um balanceador de carga gerenciado (spec.loadBalancer.managed), o proxy Envoy encerra a conexão mTLS do mongod e estabelece uma nova conexão mTLS para o mongot. Como o balanceador de carga encerra e restabelece a conexão, ele usa seu próprio certificado de cliente ao se conectar ao mongot, não ao certificado mongod original. A CA mongot deve confiar na autoridade de certificação que emitiu o certificado de cliente do balanceador de carga. O Kubernetes operador gerencia a configuração do Envoy TLS automaticamente. Exige os seguintes certificados:

  • Certificado de servidor para o proxy Envoy, ao qual o mongod se conecta. O balanceador de carga usa esse certificado para encerrar a conexão mTLS de entrada.

  • Certificado do cliente para o proxy Envoy, que o balanceador de carga apresenta ao mongot ao estabelecer a conexão mTLS upstream.

Provisione estes certificados como Segredos Kubernetes seguindo a convenção de nomenclatura que o spec.security.tls.certsSecretPrefix define. Consulte Configurações de pesquisa do MongoDB e pesquisa vetorial para obter o padrão de nomenclatura completo.

Nesta página