Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Arquitetura de vários clusters

O operador Kubernetes oferece suporte à implantação de recursos de banco de dados MongoDB e recursos do MongoDB Ops Manager em vários clusters Kubernetes. Isso oferece redundância geográfica, funcionalidade de recuperação de desastre e resiliência aprimorada.

Importante

Você não pode converter uma implantação existente do MongoDB Ops Manager de topologia de cluster único para topologia de vários clusters. Você deve começar do zero e reimplantar se começar no modo de cluster único. Planeje sua topologia antes da implantação inicial.

Você pode controlar o modo no qual implanta os recursos do MongoDB com o operador do Kubernetes com as seguintes configurações:

  • spec.topology — controla o modo para o aplicativo MongoDB Ops Manager.

  • spec.applicationDatabase.topology — controla o modo do banco de dados de aplicativo.

Se você definir spec.topology e spec.applicationDatabase.topology como MultiCluster, isso habilita o modo de vários clusters para o recurso do MongoDB Ops Manager e seu banco de dados de aplicativo, conforme mostrado no exemplo a seguir:

spec:
topology: MultiCluster
applicationDatabase:
topology: MultiCluster

No modo de vários clusters, você pode começar com um cluster de nó único e dimensionar conforme necessário. Especificamente:

  • Início do cluster de nó único: Uma implantação pode começar com um cluster de nó único.

  • Conjunto de réplicas do banco de dados de aplicativo mínimo: um conjunto de réplicas do banco de dados de aplicativo de 3nós pode ser executado em um cluster de nó único e, em seguida, expandir para vários clusters mais tarde.

  • Instância única do |aplicativo|: uma única instância do aplicativo MongoDB Ops Manager pode ser executada em um cluster, com clusters adicionais adicionados posteriormente.

No modo de cluster único (o padrão), omita a configuração de topologia ou defina-a como SingleCluster.

As seguintes limitações se aplicam a implantações de vários clusters:

  • Use versões do Ops Manager posteriores a 5.0.7.

  • Use apenas secrets para armazenamento de secrets. HashiCorp Vault não é compatível.

  • Para implantações em que o operador Kubernetes não gerencia os recursos MongoDBOpsManager e MongoDB, você deve configurar manualmente as configurações de criptografia de backup KMIP no MongoDB Ops Manager.

  • Não adicione um ServiceMonitor aos recursos MongoDBMultiCluster. A integração do Prometheus não é compatível.

  • Não é possível migrar recursos MongoDB de cluster único existentes para recursos de vários clusters.

Capacidade ou Requisito
Cluster único
Multi-Cluster

O operador deve estar no mesmo cluster que o MongoDB Ops Manager e o banco de dados de aplicativos

Sim

No

Malha de serviço necessária para clusters do MongoDB Ops Manager e do banco de dados de aplicativo

No

Sim

HashiCorp Vault compatível

Sim

No

Todos os mecanismos de backup suportados

Sim

Não. Apenas oplog/snapshot compatível com S3.

Criptografia KMIP

Sim

Você pode criar implantações MongoDB de vários clusters com ou sem uma malha de serviço.

Em ambos os casos, o operador do Kubernetes:

  • Observa a especificação MongoDBMultiCluster no cluster do operador.

  • Utiliza o kubeconfig montado para se comunicar com clusters de nós.

  • Cria ConfigMaps, Secrets, Services e StatefulSets em cada cluster de nós.

  • Implanta nós de conjunto de réplicas do MongoDB nos clusters apropriados.

  • Observa eventos de cluster de operador e cluster de nó.

  • Reconcilia recursos para confirmar o estado desejado.

Um sistema MongoDB de cluster multi-Kubernetes que usa os Controladores MongoDB para Kubernetes Operator consiste em um cluster de operador e um ou mais clusters de membros no Kubernetes:

  • O cluster do operador tem a seguinte função:

    • Hospeda os drivers MongoDB para o Kubernetes Operator

    • Atua como o plano de controle para o sistema MongoDB do cluster multi-Kubernetes

    • Hospeda a especificação de recurso MongoDBMultiCluster para o conjunto de réplicas do MongoDB

    • Hosts Ops Manager, se você implantar o Ops Manager com o Kubernetes Operator

    • Também pode hospedar membros do conjunto de réplicas MongoDB

    Importante

    O cluster central também é conhecido como cluster do operador. As referências ao cluster central podem ser renomeadas para se referir ao cluster do operador em versões futuras.

  • Os clusters de membros hospedam os conjuntos de réplicas do MongoDB.

Observação

Se o cluster do operador falhar, você não poderá usar o Kubernetes Operator para alterar sua implantação até restaurar o acesso ou reimplantar o Kubernetes Operator em outro cluster. See recuperação de desastre.

Com uma Malha de Serviço

A malha de serviços gerencia a descoberta de nós do MongoDB em clusters e lida com a comunicação entre nós. O diagrama a seguir ilustra uma implantação de vários clusters com uma malha de serviços:

Diagrama mostrando a implantação de vários clusters com uma malha de serviço
clique para ampliar

Sem malha de serviço

Domínios externos e zonas de DNS lidam com a comunicação entre clusters. Consulte Habilitar conectividade externa por meio de domínios externos e zonas de DNS. O diagrama a seguir ilustra uma implantação de vários clusters sem uma malha de serviço:

Diagrama mostrando a implantação de vários clusters sem uma malha de serviço
clique para ampliar

O diagrama a seguir mostra o aplicativo MongoDB Ops Manager, o banco de dados do aplicativo e o Backup Daemon implantados em vários clusters do Kubernetes:

Diagrama mostrando a implantação do MongoDB Ops Manager de vários clusters

Elementos-chave de uma implantação do MongoDB Ops Manager de vários clusters:

  1. O cluster do operador (por exemplo, cluster de nós 0) armazena o segredo kubeconfig (mongodb-enterprise-operator-multi-cluster-kubeconfig) e os ConfigMaps de mapeamento de cluster usados para gerenciar todos os clusters de nós.

  2. Cluster-mapping ConfigMaps acompanham o relacionamento entre nomes de cluster e índice:

    • <om_resource_name>-cluster-mapping — mapeia spec.clusterSpecList entradas para índices de cluster.

    • <om_resource_name>-db-cluster-mapping — mapeia spec.applicationDatabase.clusterSpecList entradas para índices de cluster.

    • <om_resource_name>-db-member-spec — registra a contagem de réplicas por cluster para recuperação de desastre.

  3. Application StatefulSets são nomeados <om_resource_name>-<cluster_index> em cada cluster. O operador cria um serviço ClusterIP (<om_resource_name>-svc) contendo todos os Pods locais, além de um serviço LoadBalancer opcional (<om_resource_name>-svc-ext) para acesso externo.

  4. Os StatefulSets do banco de dados de aplicativo são nomeados <om_resource_name>-db-<cluster_index>. Os serviços por pod (<om_resource_name>-db-<cluster_index>-<pod_index>-svc) permitem a endereçabilidade individual do mongod em toda a malha de serviços.

  5. Backup Daemon StatefulSets são nomeados <om_resource_name>-backup-daemon-<cluster_index>, criados se spec.backup.enabled for true.

A tabela a seguir descreve os tipos de clientes e serviços que se conectam ao aplicativo MongoDB Ops Manager em implantações de vários clusters e os URLs que eles usam:

origem
Propósito
URL
Kubernetes Operator

Configura o MongoDB Ops Manager, permite o monitoramento

FQDN padrão <om_resource_name>-svc.<namespace>.svc.cluster.local ou spec.opsManagerURL

Kubernetes Operator

Configura uma implantação específica do MongoDB

MongoDB Agent no banco de dados de aplicativo

Recebe configuração de automação do MongoDB Ops Manager

Modo headless (não é necessária conexão com o MongoDB Ops Manager)

Agente de monitoramento no banco de dados de aplicativos

Envia dados de monitoramento para o MongoDB Ops Manager

FQDN padrão ou spec.opsManagerURL

MongoDB Agent em recursos MongoDB

Recebe a configuração de automação do Ops Manager, incluindo instruções de backup e restauração

ConfigMap do projeto

Usuário

Acessa a IU ou a API do MongoDB Ops Manager

Domínio externo via spec.externalConnectivity

Para implantações do Ops Manager de vários clusters, adicione os clusters do Kubernetes que hospedam o banco de dados de aplicativo e o aplicativo do Ops Manager à mesma malha de serviço. Isso permite:

  • Conectividade de rede entre componentes implantados em clusters.

  • Resolução de DNS entre clusters para FQDNs de serviço por pod.

Além disso, também recomendamos adicionar o cluster do operador à mesma malha de serviço, o que permite hospedar instâncias do MongoDB Ops Manager Application e do banco de dados de aplicativo diretamente.

Configure a malha de serviço para os seguintes clusters:

  • O cluster do operador (onde você instala o operador do Kubernetes)

  • Todos os clusters Kubernetes de nó que hospedam instâncias do aplicativo MongoDB Ops Manager

  • Todos os clusters Kubernetes de nó que hospedam instâncias de banco de dados de aplicativo

A malha de serviço garante que cada instância do MongoDB Ops Manager possa se conectar a cada instância do banco de dados de aplicativo, mesmo entre clusters. Após a implantação, cada ponto de extremidade da API do MongoDB Ops Manager deve ser capaz de se conectar diretamente a cada nó do banco de dados de aplicativo.

Para implantações de vários clusters do MongoDB Ops Manager, cada cluster pode expor seus Pods do aplicativo MongoDB Ops Manager individualmente usando um serviço do tipo LoadBalancer. Crie este serviço usando spec.externalConnectivity e aponte um domínio externo para seu endereço IP externo. Para saber mais sobre como configurar o balanceamento de carga em implantações de vários clusters, consulte Requisitos de malha de serviço para implantações de vários clusters do MongoDB Ops Manager.

Como o operador do Kubernetes não oferece suporte nativo ao balanceamento de carga entre clusters, você deve configurar o balanceamento de carga externamente. As seguintes abordagens existem para habilitar o balanceamento de carga entre clusters para implantações do Ops Manager:

  • Balanceador de carga externo: configure um balanceador de carga de rede externo (proxy passthrough) para todos os clusters que hospedam o aplicativo MongoDB Ops Manager. O balanceador de carga encaminha o tráfego para o serviço LoadBalancer de cada cluster de forma round-robin. O diagrama a seguir ilustra essa abordagem:
Implantação de vários clusters com balanceador de carga externo
clique para ampliar
  • Service Mesh com proxy: use o balanceamento de carga entre clusters do service mesh. Implante um proxy (como Nginx ou HAProxy) em um cluster, exponha-o externamente e configure o passthrough TCP para <om_resource_name>-svc.<namespace>.svc.cluster.local. O diagrama a seguir ilustra essa abordagem:
Implantação de vários clusters com balanceamento de carga de malha de serviço
clique para ampliar

A distribuição geográfica das instâncias do banco de dados de aplicativo e do MongoDB Ops Manager pode impacto o desempenho do aplicativo do MongoDB Ops Manager e dos processos de backup/restauração. Consulte Desempenho em implantações multirregionais.

Para maximizar os benefícios da resiliência e disponibilidade de vários clusters, implante todos os componentes na mesma área geográfica, quando possível.

As fontes de possível degradação do desempenho incluem:

  • Aumento da latência da rede entre o aplicativo MongoDB Ops Manager e o nó primário do banco de dados de aplicativo.

  • Aumento da latência entre os nós do banco de dados MongoDB e o aplicativo Ops Manager executando tarefas de backup.

Se você planeja implantações geograficamente distantes, entre em contato com o suporte do MongoDB para obter assistência.

As seguintes funcionalidades de vários clusters usam os mesmos procedimentos que as implantações de cluster único:

  • Conectar com registros DNS SRV: Use a string de conexão da lista de sementes DNS connectionString.standardSrv do segredo que o operador Kubernetes cria. Consulte Conectar-se a um recurso de banco de dados MongoDB a partir de dentro do Kubernetes e selecione a aba Using the Kubernetes Secret.

  • Gerenciar segurança para usuários de banco de dados: use os mesmos procedimentos de autenticação LDAP, SCRAM, X.509 e OIDC que as implantações de cluster único, com as seguintes exceções:

    • Os procedimentos de vários clusters aplicam-se apenas a conjuntos de réplicas (os clusters sharded não são suportados).

    • Em mongodbResourceRef, especifique o nome do conjunto de réplicas de vários clusters.

  • Queryable Backups (cluster único |onprem| apenas): se o MongoDB Ops Manager for implantado em um único cluster, você poderá configurar queryable backup. Queryable backup não são suportados para implantações do MongoDB Ops Manager de vários clusters.