Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Arquitectura multi-clúster

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.

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 la moda de clústeres múltiples, puede empezar con un solo clúster de nodos 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.

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 MongoDBOpsManager y MongoDB, 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.

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í

Puede crear implementaciones de MongoDB de clúster múltiple con o sin una malla de servicios.

En ambos casos, el operador de Kubernetes:

  • Vigila la especificación MongoDBMultiCluster en el clúster central.

  • Utiliza el kubeconfig montado 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.

  • Vigila los eventos del clúster central y del clúster de nodos.

  • Reconcilia los recursos para confirmar el estado deseado.

Una implementación de MongoDB en un clúster multi-Kubernetes que usa los MongoDB Controllers para el Operador de Kubernetes consta de un clúster central y uno o más clústeres nodos en Kubernetes:

  • El clúster central cumple 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 MongoDBMultiCluster para 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

    Nota

    El clúster central también se conoce como el clúster operador.

  • Los nodos clústeres alojan los conjuntos de réplicas de MongoDB.

Nota

Si el clúster central falla, no puede usar el operador de Kubernetes para cambiar su implementación hasta que realice la restauración del acceso o vuelva a implementar el operador de Kubernetes en otro clúster. Consulte 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:

Diagrama que muestra una implementación de clústeres múltiples con un service mesh
haga clic para ampliar

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 que muestra la implementación de clústeres múltiple sin una malla de servicios
haga clic para ampliar

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:

Diagrama que muestra la implementación de Ops Manager de varios clústeres

Elementos clave de una implementación de MongoDB Ops Manager con múltiples clústeres:

  1. Clúster central (por ejemplo, clúster de nodos 0) almacena el secreto kubeconfig (mongodb-enterprise-operator-multi-cluster-kubeconfig) y los ConfigMaps de asignación de clúster utilizados para gestionar todos los clúster de nodos.

  2. 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 — asigna spec.clusterSpecList entradas a índices de clúster.

    • <om_resource_name>-db-cluster-mapping — asigna spec.applicationDatabase.clusterSpecList entradas 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.

  3. Los StatefulSets de aplicación se denominan <om_resource_name>-<cluster_index> en cada clúster. El operador crea un servicio ClusterIP (<om_resource_name>-svc) que contiene todos los Pods locales, además de un servicio LoadBalancer opcional (<om_resource_name>-svc-ext) para el acceso externo.

  4. 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 de mongod en toda la malla de servicios.

  5. Los daemon de copias de seguridad StatefulSets se denominan <om_resource_name>-backup-daemon-<cluster_index>, creados si spec.backup.enabled es true.

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 <om_resource_name>-svc.<namespace>.svc.cluster.local o spec.opsManagerURL

Operador de Kubernetes

Configura una implementación específica de MongoDB

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 spec.opsManagerURL

MongoDB Agent en los recursos MongoDB

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 spec.externalConnectivity

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 añadir el clúster central a la misma malla de servicios, lo que le permite host instancias de MongoDB Ops Manager Application y de base de datos de la aplicación directamente.

Configure la malla de servicios para los siguientes clústeres:

  • El clúster central (donde se 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.

Para implementaciones de MongoDB Ops Manager de varios clústeres, cada clúster puede exponer sus pods de aplicación de MongoDB Ops Manager individualmente mediante 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 Service Mesh para implementaciones de MongoDB 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 LoadBalancer de cada clúster de forma rotatoria. El siguiente diagrama ilustra este enfoque:
Implementación de varios clústeres con balanceador de carga externo
haga clic para ampliar
  • 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:
Implementación de varios clústeres con balanceo de carga de malla de servicio
haga clic para ampliar

La distribución geográfica de la base de datos de la aplicación y las instancias de Ops Manager puede tener un impacto en el rendimiento de la aplicación 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 Soporte de MongoDB para obtener ayuda.

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.standardSrv del 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.

Califique esta página