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.
Modo Único e Multi-Cluster
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.
Limitações de implantação de vários clusters
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
MongoDBOpsManagereMongoDB, 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.
Diferenças entre sistemas de um e 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 | Com limitações |
Diagramas de implantação de recursos de banco de dados MongoDB de vários clusters
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
MongoDBMultiClusterno cluster do operador.Utiliza o
kubeconfigmontado 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
MongoDBMultiClusterpara o conjunto de réplicas do MongoDBHosts 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:
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 de implantação de recursos do MongoDB Ops Manager de vários clusters
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:
Elementos-chave de uma implantação do MongoDB Ops Manager de vários clusters:
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.Cluster-mapping ConfigMaps acompanham o relacionamento entre nomes de cluster e índice:
<om_resource_name>-cluster-mapping— mapeiaspec.clusterSpecListentradas para índices de cluster.<om_resource_name>-db-cluster-mapping— mapeiaspec.applicationDatabase.clusterSpecListentradas para índices de cluster.<om_resource_name>-db-member-spec— registra a contagem de réplicas por cluster para recuperação de desastre.
Application StatefulSets são nomeados
<om_resource_name>-<cluster_index>em cada cluster. O operador cria um serviçoClusterIP(<om_resource_name>-svc) contendo todos os Pods locais, além de um serviçoLoadBalanceropcional (<om_resource_name>-svc-ext) para acesso externo.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 domongodem toda a malha de serviços.Backup Daemon StatefulSets são nomeados
<om_resource_name>-backup-daemon-<cluster_index>, criados sespec.backup.enabledfortrue.
Rede de vários clusters
Visão geral de rede para implantações de vários clusters
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 |
Kubernetes Operator | Configura uma implantação específica do MongoDB | ConfigMap do projeto (de Crie um projeto por implantação do MongoDB usando um ConfigMap) |
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 |
MongoDB Agent em recursos | 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 |
Requisitos de malha de serviço para implantações do MongoDB Ops Manager de vários clusters
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.
Balanceamento de carga para implantações do MongoDB Ops Manager de vários clusters
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
LoadBalancerde cada cluster de forma round-robin. O diagrama a seguir ilustra essa abordagem:
- 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:
Considerações de desempenho multi-cluster para implantações do MongoDB Ops Manager
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.
Funcionalidades de recursos de banco de dados MongoDB de vários clusters
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.standardSrvdo 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.