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 de recursos do Ops Manager em vários clusters Kubernetes. Isso fornece redundância geográfica, recursos de recuperação de desastres e resiliência aprimorada.

Importante

Não é possível converter um sistema existente do Ops Manager de uma topologia de um para vários clusters. Você deve recomeçar e redistribuir se começar no modo de cluster único. Planeje sua topologia antes da implantação inicial.

Você pode controlar o modo em que distribui os recursos do MongoDB com o Kubernetes Operator com as seguintes configurações:

  • spec.topology — controla o modo do aplicação Ops Manager.

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

Se você definir spec.topology e spec.applicationDatabase.topology como MultiCluster, isso habilitará o modo de vários clusters para o recurso Ops Manager e seu banco de dados de aplicativos, 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 um único membro e escalar conforme necessário. Especificamente:

  • Início de clusterde membro único: Uma implementação pode começar com um cluster de membros.

  • Conjunto mínimo de réplicas do aplicativo de banco de dados: um 3conjunto mínimo de réplicas de membros do aplicativo de banco de dados pode ser executado em um único cluster de membros e, em seguida, expandido entre clusters posteriormente.

  • Único | aplicação| instância: uma única instância do aplicativo Ops Manager pode ser executada em um cluster, com clusters adicionais adicionados posteriormente.

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

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

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

  • Use apenas segredos para armazenamento secreto. HashiCorp Vault não é compatível.

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

  • Não adicione um ServiceMonitor aos recursos do MongoDBMultiCluster. A integração do Prometeus não é aceita.

  • Você não pode 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 Ops Manager e o aplicativo de banco de dados

Sim

No

Malha de serviço necessária para clusters do Ops Manager e do Banco de Dados de Aplicativos

No

Sim

Compatível com oHashiCorp Vault

Sim

No

Todos os mecanismos de backup suportados

Sim

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

Criptografia KMIP

Sim

Você pode criar deployments do MongoDB em vários clusters com ou sem uma interface de serviço.

Em ambos os casos, o operador do Kubernetes:

  • Fique atento à especificação MongoDBMultiCluster no cluster do operador.

  • Utiliza o kubeconfig montado para comunicar com clusters de membros.

  • Cria ConfigMaps, Secrets, Services e StatefulSets em cada cluster de membros.

  • Distribui membros do conjunto de réplicas MongoDB nos clusters apropriados.

  • Observa eventos de cluster de operadores e cluster de membros.

  • 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 seu sistema até restaurar o acesso ou reimplantar o Kubernetes Operator em outro cluster.Consulte Recuperação de desastres.

Com uma Service Mesh

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

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

Sem uma Malha de Serviço

Os domínios externos e as 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 um sistema 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 Ops Manager, o Banco de Dados do Aplicativo e o Backup Daemon distribuídos em vários clusters do Kubernetes:

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

Elementos principais de um sistema do Ops Manager multicluster:

  1. O cluster de operador (por exemplo, cluster 0 de membros) armazena o kubeconfig segredomongodb-enterprise-operator-multi-cluster-kubeconfig () e o ConfigMaps de mapeamento de cluster usado para gerenciar todos os clusters de membros.

  2. Omapeamento de clusters ConfigMaps rastreia o relacionamento entre nomes de cluster e índices:

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

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

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

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

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

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

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

Origem
Propósito
URL
Kubernetes Operator

Configura o Ops Manager, permite o monitoramento

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

Kubernetes Operator

Configura um MongoDB deployment específico

MongoDB Agent no banco de dados de aplicativos

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

modo headless (nenhuma conexão com o Ops Manager necessária)

agente de monitoramento no banco de dados de aplicativos

Envia dados de monitoramento para o Ops Manager

FQDN padrão ou spec.opsManagerURL

MongoDB Agent em recursos do MongoDB

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

Projeto ConfigMap

Usuário

Acesse a UI ou a API do Ops Manager

Domínio externo via spec.externalConnectivity

Para sistemas do Ops Manager com vários clusters, adicione os clusters do Kubernetes que hospedam o banco de dados de aplicativos e o aplicativo de Ops Manager à mesma tela de serviço. Isso habilita:

  • Conectividade de rede entre componentes implementados em clusters.

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

Além disso, também recomendamos adicionar o cluster de operadores à mesma mescla de serviço, o que permite que ele hospede diretamente as instâncias do Aplicativo de Ops Manager e do Banco de Dados de Aplicativos.

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

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

  • Todos os clusters de membros do Kubernetes que hospedam instâncias do aplicativo Ops Manager

  • Todos os clusters Kubernetes de membros que hospedam instâncias do banco de dados de aplicativos

A mesclagem de serviços garante que cada instância do Ops Manager possa se conectar a todas as instâncias do banco de dados de aplicativos, mesmo entre clusters. Após a implantação, cada endpoint da API do Ops Manager deve ser capaz de se conectar diretamente a cada nó do banco de dados de aplicativos.

Para sistemas do Ops Manager em vários clusters, cada cluster pode expor seus pods de aplicativos do Ops Manager individualmente usando um LoadBalancerserviço do tipo. Crie este serviço utilizando spec.externalConnectivity e ponto um domínio externo para seu endereço IP externo. Para saber mais sobre como configurar o balanceamento de carga em sistemas de vários clusters, consulte Requisitos do Service Mesh para sistemas do Ops Manager de vários clusters.

Como o Operador Kubernetes não oferece suporte nativo ao balanceamento de carga entre clusters, você deve configurar o balanceamento de carga externamente. Existem as seguintes abordagens para habilitar o balanceamento de carga entre clusters para sistemas do Ops Manager:

  • Balanceador de carga externo: configure um balanceador de carga de rede externo (proxy de passagem) para todos os clusters que hospedam o aplicativo de Ops Manager. O balanceador de carga encaminha o tráfego para o serviço de cada cluster LoadBalancer de forma circular. O diagrama a seguir ilustra esta abordagem:
Implementaçã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 a passagem TCP <om_resource_name>-svc.<namespace>.svc.cluster.local para. O diagrama a seguir ilustra esta abordagem:
Implementação em vários clusters com balanceamento de carga em Service Mesh
clique para ampliar

A distribuição geográfica das instâncias do Banco de Dados de Aplicativo e do Gerenciador de Operações pode impacto o desempenho do Aplicativo do Gerenciador de Operações e dos processos de backup/restauração.Consulte Desempenho em sistemas de várias regiões.

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

Fontes de possível degradação de desempenho incluem:

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

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

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

As seguintes capacidades de multi-cluster usam os mesmos procedimentos que as implantações de cluster único:

  • Conectar-se com registros DNS SRV: use a connectionString.standardSrv string de conexão da lista de sementes de DNS do segredo criado pelo Kubernetes Operator. Consulte Conectar-se a um recurso de banco de dados MongoDB de dentro do Kubernetes e selecione a Using the Kubernetes Secret guia.

  • Gerencie a segurança para usuários do banco de dados: Use os mesmos509 procedimentos de autenticação LDAP, SCRAM, X. e OIDC que os sistemas de cluster único, com as seguintes exceções:

    • Os procedimentos de vários clusters se aplicam somente a conjuntos de réplicas (clusters fragmentados não são permitidos).

    • Em mongodbResourceRef, especifique o nome do conjunto de réplicas multicluster.

  • Backups para query (somente Cluster único |onprem|): se o Ops Manager estiver distribuído em um único cluster, você poderá configurar backups para query. Backups para query não são suportados para sistemas do Ops Manager de vários clusters.