El operador de Kubernetes admite la implementación de recursos de base de datos de MongoDB y recursos de MongoDB Ops Manager en varios clústeres de Kubernetes. Esto proporciona redundancia geográfica, capacidades de recuperación ante desastres y una mayor resiliencia.
Importante
No puede convertir una implementación existente de MongoDB Ops Manager de una topología de clúster único a una de clúster múltiple. Debe empezar de nuevo y volver a implementar si comienza en modo de clúster único. Planifique su topología antes de la implementación inicial.
Modo de Clúster Único y Múltiple
Puede controlar la moda en la que implementa los recursos de MongoDB con el operador de Kubernetes con las siguientes configuraciones:
spec.topology— controla el modo de la aplicación de Ops Manager.spec.applicationDatabase.topology— controla el modo de la base de datos de la aplicación.
Si estableces spec.topology y spec.applicationDatabase.topology en MultiCluster, se habilita el modo de clúster múltiple para el recurso de MongoDB Ops Manager y su base de datos de la aplicación, como se muestra en el siguiente ejemplo:
spec: topology: MultiCluster applicationDatabase: topology: MultiCluster
En el modo de clúster múltiple, puede comenzar con un clúster de un solo nodo y escalar según sea necesario. Específicamente:
Inicio de clúster de un solo nodo: una implementación puede comenzar con un clúster de un solo nodo.
Set de réplicas de la base de datos de la aplicación mínimo: un set de réplicas de la base de datos de la aplicación de 3nodos mínimo puede ejecutarse en un clúster de un solo nodo y, a continuación, expandirse a través de los clúster más tarde.
Instancia de aplicación única: una sola instancia de aplicación de Ops Manager puede ejecutarse en un clúster, con clústeres adicionales agregados más tarde.
En el modo de clúster único (el predeterminado), omita la configuración de topología o establézcala en SingleCluster.
Limitaciones de la implementación en múltiples clústeres
Las siguientes limitaciones se aplican a las implementaciones de varios clústeres:
Use versiones de Ops Manager posteriores a 5.0.7.
Utilice únicamente secretos para el almacenamiento de secretos. HashiCorp Vault no es compatible.
Para implementaciones en las que el operador de Kubernetes no gestiona los recursos
MongoDBOpsManageryMongoDB, debes configurar manualmente la configuración de cifrado de copia de seguridad de KMIP en MongoDB Ops Manager.No agregue un ServiceMonitor a los recursos
MongoDBMultiCluster. La integración de Prometheus no es compatible.No puede migrar recursos existentes de MongoDB de clúster único a recursos de clúster múltiple.
Diferencias entre implementaciones de clúster único y multiclúster
Capacidad o requisito | Clúster único | Multi-Clúster |
|---|---|---|
El operador debe estar en el mismo clúster que Ops Manager y la base de datos de la aplicación | Sí | No |
Malla de servicio necesaria para los clúster de MongoDB Ops Manager y base de datos de la aplicación | No | Sí |
HashiCorp Vault compatible | Sí | No |
Todos los mecanismos de copia de seguridad admitidos | Sí | No. Solo oplog/snapshot compatible con S3. |
KMIP cifrado | Sí | Con limitaciones |
Diagramas de implementación de recursos de base de datos MongoDB de clúster múltiple
Puede crear implementaciones de MongoDB de clúster múltiple con o sin una malla de servicios.
En ambos casos, el operador de Kubernetes:
Monitorea la especificación
MongoDBMultiClusteren el clúster del operador.Utiliza el
kubeconfigmontado para comunicarse con los clústeres de nodos.Crea ConfigMaps, Secrets, Services y StatefulSets en cada clúster de nodos.
Implementa nodos de set de réplicas de MongoDB en los clústeres adecuados.
Observa los eventos del clúster del operador y del clúster de nodos.
Reconcilia los recursos para confirmar el estado deseado.
Una implementación multi-Kubernetes clúster MongoDB que utiliza los Controladores MongoDB para el operador Kubernetes consiste en un clúster operador y uno o más nodos clúster en Kubernetes:
El clúster de operadores tiene el siguiente rol:
Aloja los controladores MongoDB para el operador Kubernetes
Actúa como el plano de control para la implementación multi-Kubernetes de MongoDB
Aloja la especificación de recursos
MongoDBMultiClusterpara el set de réplicas de MongoDB.Hospeda a Ops Manager, si implementas Ops Manager con Kubernetes operador
También puede alojar nodos del set de réplicas de MongoDB
Importante
El clúster central también se conoce como el clúster del operador. Es posible que en futuras versiones, las referencias al clúster central sean renombradas para referirse al clúster del operador.
Los nodos clústeres alojan los conjuntos de réplicas de MongoDB.
Nota
Si el clúster del operador falla, no puede utilizar el Operador de Kubernetes para cambiar su implementación hasta que restaure el acceso o vuelva a implementar el Operador de Kubernetes en otro clúster. See recuperación ante desastres.
Con una malla de servicio
La malla de servicios gestiona la detección de nodos de MongoDB en todos los clústeres y gestiona la comunicación entre nodos. El siguiente diagrama ilustra una implementación de varios clústeres con una malla de servicios:
Sin Service Mesh
Los dominios externos y las zonas DNS gestionan la comunicación entre clústeres. Consulte Habilitar la conectividad externa a través de dominios externos y zonas DNS. El siguiente diagrama ilustra una implementación multiclúster sin un Service Mesh:
Diagrama de implementación de recursos de MongoDB Ops Manager de clúster múltiple
El siguiente diagrama muestra la aplicación MongoDB Ops Manager, la base de datos de la aplicación y el daemon de copias de seguridad implementados en varios clústeres de Kubernetes:
Elementos clave de una implementación de MongoDB Ops Manager con múltiples clústeres:
El clúster del operador (por ejemplo, el clúster de nodo 0) almacena el secreto
kubeconfig(mongodb-enterprise-operator-multi-cluster-kubeconfig) y los ConfigMaps de asignación de clústeres utilizados para gestionar todos los clústeres de nodo.Los ConfigMaps de asignación de clústeres rastrean la relación entre los nombres de los clústeres y los índices:
<om_resource_name>-cluster-mapping— asignaspec.clusterSpecListentradas a índices de clúster.<om_resource_name>-db-cluster-mapping— asignaspec.applicationDatabase.clusterSpecListentradas a índices de clúster.<om_resource_name>-db-member-spec— registra el recuento de réplicas por clúster para la recuperación ante desastres.
Los StatefulSets de aplicación se denominan
<om_resource_name>-<cluster_index>en cada clúster. El operador crea un servicioClusterIP(<om_resource_name>-svc) que contiene todos los Pods locales, además de un servicioLoadBalanceropcional (<om_resource_name>-svc-ext) para el acceso externo.Los StatefulSets de la base de datos de la aplicación se denominan
<om_resource_name>-db-<cluster_index>. Los servicios por pod (<om_resource_name>-db-<cluster_index>-<pod_index>-svc) permiten la direccionabilidad individual demongoden toda la malla de servicios.Los daemon de copias de seguridad StatefulSets se denominan
<om_resource_name>-backup-daemon-<cluster_index>, creados sispec.backup.enabledestrue.
Redes de varios clústeres
Descripción general de redes para implementaciones de clústeres múltiple
La siguiente tabla describe los tipos de clientes y servicios que se conectan a la aplicación de MongoDB Ops Manager en implementaciones de múltiples clústeres, y las URL que utilizan:
Origen | Propósito | URL |
|---|---|---|
Operador de Kubernetes | Configura Ops Manager, habilita la supervisión | FQDN por defecto |
Operador de Kubernetes | Configura una implementación específica de MongoDB | ConfigMap del proyecto (de Crear un proyecto por cada implementación de MongoDB utilizando un ConfigMap) |
MongoDB Agent en la base de datos de la aplicación | Recibe la configuración de automatización de MongoDB Ops Manager | Modo sin interfaz gráfica (no se necesita conexión a Ops Manager) |
Agente de supervisión en la base de datos de la aplicación | Envía datos de supervisión a MongoDB Ops Manager | FQDN por defecto o |
MongoDB Agent en los recursos | Recibe la configuración de automatización de MongoDB Ops Manager, incluidas las instrucciones de copia de seguridad y restauración | ConfigMap del proyecto |
Usuario | Accede a la Interfaz de Usuario o API de MongoDB Ops Manager | Dominio externo a través de |
Requisitos de Service Mesh para implementaciones de MongoDB Ops Manager de clústeres múltiples
Para implementaciones de Ops Manager de varios clúster, agregue los clúster de Kubernetes que alojan la base de datos de la aplicación y la aplicación de Ops Manager a la misma malla de servicios. Esto permite:
Conectividad de red entre componentes implementados en clústeres.
Resolución DNS entre clústeres para FQDN de servicio por Pod.
Además, también recomendamos agregar el clúster del operador a la misma malla de servicio, lo que le permite alojar directamente instancias de la base de datos de la aplicación y la aplicación de Ops Manager.
Configure la malla de servicios para los siguientes clústeres:
El clúster de operadores (donde instala el operador de Kubernetes)
Todos los clústeres de Kubernetes de nodos que alojan instancias de la aplicación MongoDB Ops Manager
Todos los clústeres de Kubernetes de nodo que alojan instancias de base de datos de la aplicación
La malla de servicios garantiza que cada instancia de MongoDB Ops Manager pueda conectarse a cada instancia de base de datos de la aplicación, incluso entre clústeres. Después de la implementación, cada endpoint de la API de MongoDB Ops Manager debe poder conectarse directamente a cada nodo de la base de datos de la aplicación.
Equilibrio de carga para implementaciones de MongoDB Ops Manager con múltiples clústeres
Para implementaciones de Ops Manager de varios clústeres, cada clúster puede exponer sus pods de aplicación de Ops Manager de forma individual utilizando un servicio de tipo LoadBalancer. Cree este servicio utilizando spec.externalConnectivity y apunte un dominio externo a su dirección IP externa. Para obtener más información sobre la configuración del equilibrio de carga en implementaciones de varios clústeres, consulte Requisitos de malla de servicio para implementaciones de Ops Manager de varios clústeres.
Dado que el Operador de Kubernetes no admite el equilibrio de carga entre clústeres de forma nativa, debe configurar el equilibrio de carga externamente. Existen los siguientes enfoques para habilitar el equilibrio de carga entre clústeres para las implementaciones de Ops Manager:
- Balanceador de carga externo: Configure un balanceador de carga de red externo (proxy de paso) para todos los clústeres que alojan la aplicación MongoDB Ops Manager. El balanceador de carga reenvía el tráfico al servicio
LoadBalancerde cada clúster de forma rotatoria. El siguiente diagrama ilustra este enfoque:
- Malla de servicio con proxy: utilice el equilibrio de carga entre clúster de la malla de servicio. Implemente un proxy (como Nginx o HAProxy) en un clúster, expóngalo externamente y configure el paso de TCP a
<om_resource_name>-svc.<namespace>.svc.cluster.local. El siguiente diagrama ilustra este enfoque:
Consideraciones de rendimiento de clúster múltiple para implementaciones de MongoDB Ops Manager
La distribución geográfica de la base de datos de la aplicación y las instancias de Ops Manager puede afectar el rendimiento de la aplicación de Ops Manager y los procesos de copia de seguridad y restauración. Consulte Rendimiento en implementaciones multiregión.
Para maximizar los beneficios de la resiliencia y la disponibilidad de varios clústeres, implemente todos los componentes en la misma área geográfica siempre que sea posible.
Las fuentes de posible degradación del rendimiento incluyen:
Mayor latencia de red entre la aplicación de Ops Manager y el nodo de base de datos de la aplicación principal.
Mayor latencia entre los nodos de la base de datos MongoDB y la aplicación Ops Manager que realiza tareas de copia de seguridad.
Si planea implementaciones geográficamente distantes, póngase en contacto con el soporte de MongoDB para obtener ayuda.
Capacidades de recursos de base de datos de MongoDB de varios clúster
Las siguientes capacidades de varios clústeres utilizan los mismos procedimientos que las implementaciones de un solo clúster:
Conectarse con registros DNS SRV: Utilice la cadena de conexión de la lista de nodos iniciales de DNS
connectionString.standardSrvdel secreto que crea el operador de Kubernetes. Consulte Conectarse a un recurso de base de datos MongoDB desde el interior de Kubernetes y seleccione la pestaña Using the Kubernetes Secret.Gestionar la seguridad para usuarios de base de datos: utilice los mismos procedimientos de autenticación LDAP, SCRAM, X.509 y OIDC que las implementaciones de clúster único, con las siguientes excepciones:
Los procedimientos de clústeres múltiples solo se aplican a los sets de réplicas (no se admiten clústeres particionados).
En
mongodbResourceRef, especifique el nombre del set de réplicas de varios clústeres.
Respaldos consultables (clúster único |onprem| únicamente): si Ops Manager se implementa en un solo clúster, puede configurar respaldos consultables. Los respaldos consultables no son compatibles con las implementaciones de Ops Manager de varios clúster.