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.
Modo Único e Multi-Cluster
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.
Limitações de sistema de vários clusters
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
MongoDBOpsManagerosMongoDBrecursos 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.
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 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 | Com limitações |
Diagramas de sistema de recursos do banco de dados MongoDB de vários clusters
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
MongoDBMultiClusterno cluster do operador.Utiliza o
kubeconfigmontado 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
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 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:
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 de sistema de recursos do Ops Manager multi-cluster
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:
Elementos principais de um sistema do Ops Manager multicluster:
O cluster de operador (por exemplo, cluster 0 de membros) armazena o
kubeconfigsegredomongodb-enterprise-operator-multi-cluster-kubeconfig() e o ConfigMaps de mapeamento de cluster usado para gerenciar todos os clusters de membros.Omapeamento de clusters ConfigMaps rastreia o relacionamento entre nomes de cluster e índices:
<om_resource_name>-cluster-mapping— mapeia entradasspec.clusterSpecListpara índices de cluster.<om_resource_name>-db-cluster-mapping— mapeia entradasspec.applicationDatabase.clusterSpecListpara índices de cluster.<om_resource_name>-db-member-spec— registra a contagem de réplicas por cluster para recuperação de desastres.
Os StatefulSets
<om_resource_name>-<cluster_index>do aplicativo são nomeados em cada cluster. O operador cria umClusterIPserviço<om_resource_name>-svc() contendo todos os Pods locais, além de umLoadBalancerserviço opcional<om_resource_name>-svc-ext() para acesso externo.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 demongodem toda a rede de serviços.OsStatefulSets do Backup Daemon são
<om_resource_name>-backup-daemon-<cluster_index>denominados, criadosspec.backup.enabledsetruefor.
Rede de vários clusters
Visão geral de rede para sistemas de vários clusters
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 |
Kubernetes Operator | Configura um MongoDB deployment específico | Projeto ConfigMap (de Criar um projeto por sistema MongoDB usando um ConfigMap) |
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 |
MongoDB Agent em recursos do | 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 |
Requisitos do Service Mesh para sistemas do Ops Manager em vários clusters
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.
Balanceamento de carga para sistemas do Ops Manager de vários clusters
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
LoadBalancerde forma circular. O diagrama a seguir ilustra esta 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 a passagem TCP
<om_resource_name>-svc.<namespace>.svc.cluster.localpara. O diagrama a seguir ilustra esta abordagem:
Considerações de desempenho de vários clusters para sistemas do Ops Manager
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.
Recursos do banco de dados MongoDB de vários clusters
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.standardSrvstring 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.