Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Redes, balanceo de carga, malha de servicios

Tenga en cuenta los siguientes requisitos adicionales al implementar la aplicación Ops Manager en varios clústeres de Kubernetes:

  • Descripción general de redes

  • Malla de servicios

  • Equilibrio de carga

  • Ejemplo de diagrama 1: Balanceador de carga externo

  • Ejemplo de diagrama 2: Equilibrio de carga mediante una malla de servicios con un proxy

La siguiente tabla describe:

  • Orígenes de conexiones a las instancias de la aplicación de Ops Manager

  • Las tareas que realiza la aplicación Ops Manager después de conectarse

  • La URL de Ops Manager que utiliza cada tipo de conexión y cómo configurarla.

Origen de la conexión
Propósito o acción
URL al Administrador de operaciones

El operador de Kubernetes

Configura la instancia de Ops Manager y habilita la supervisión una vez que la base de datos de la aplicación esté en estado en ejecución.

A través de un Ops Manager por defecto FQDN en el formato: <om_resource_name>-svc.<namespace>.svc.cluster.local o el valor de spec.opsManagerURL

El operador de Kubernetes

Configura un recurso MongoDB específico o la implementación de un recurso MongoDBMultiCluster.

A través del ConfigMap del proyecto, configurado cuando creas un proyecto

Agente de MongoDB en los Pods de la Base de Datos de la Aplicación

Recibir la configuración de automatización

Sin tener que conectar a una instancia de Ops Manager. El MongoDB Agent está funcionando en modo sin cabeza.

Agente de supervisión en los pods de la base de datos de la aplicación

Envía datos de supervisión

A través de un FQDN de Ops Manager predeterminado en el formato: <om_resource_name>-svc.<namespace>.svc.cluster.local o el valor de spec.opsManagerURL

Agente de MongoDB en los pods de recursos MongoDB o MongoDBMultiCluster

Recibe los procesos de configuración, backup y restauración de Automatización

A través del ConfigMap del proyecto, configurado cuando creas un proyecto

Agente de monitoreo en los pods de recursos MongoDB o MongoDBMultiCluster

Envía datos de supervisión

A través del ConfigMap del proyecto, configurado cuando creas un proyecto

Usuario

Utiliza la Interfaz de Usuario o la API de Ops Manager

A través de un dominio público externo de la instancia de Ops Manager expuesta externamente, configurada con spec.externalConnectivity

Agregue los nodos que alojan las instancias de la base de datos de la aplicación y las instancias de la aplicación de Ops Manager a la misma malla de servicio para permitir lo siguiente:

  • Conectividad de red entre componentes implementados.

  • Resolución DNS entre clústeres.

Para simplificar la configuración de red entre el operador de Kubernetes y las instancias de Ops Manager, recomendamos que añadas el clúster del operador, que es el clúster de Kubernetes donde instalas el operador de Kubernetes, a la misma malla de servicios, aunque no es un requisito estricto. Si incluye el clúster de operadores en la misma malla de servicios, podrá usarlo como host para la aplicación Ops Manager y las instancias de la base de datos de la aplicación.

Configure una malla de servicios para los siguientes clústeres de Kubernetes e inclúyalos en la configuración de la malla:

  • El "clúster de operadores" en el que se implementa el propio operador de Kubernetes.

  • Los “nodos Kubernetes clústeres” que alojarán las instancias de la aplicación Ops Manager.

  • Clústeres Kubernetes adicionales de nodos, o los mismos clústeres de nodos utilizados para Ops Manager, que alojarán las instancias de la base de datos de la aplicación.

Tener la misma malla de servicio configurada para todos los clústeres de Kubernetes garantiza que cada instancia de Ops Manager pueda establecer una conexión segura con cualquiera de las instancias de la base de datos de aplicaciones implementadas en varios clústeres de Kubernetes.

Después de implementar las instancias de la base de datos de la aplicación en los clústeres de Kubernetes miembros, el punto final de la API de cada instancia de Ops Manager que implemente en los clústeres de Kubernetes miembros debe poder conectarse directamente a cada una de las instancias de la base de datos de la aplicación. Esto permite al operador de Kubernetes completar las etapas necesarias para implementar las instancias de Ops Manager en los clústeres miembros, como la creación de usuarios administradores y la configuración de copias de seguridad.

En la mayoría de los casos, debe proporcionar un acceso externo a la aplicación Ops Manager para permitir el acceso de los usuarios a la interfaz de usuario de Ops Manager.

Para implementaciones de múltiples clústeres de la aplicación Ops Manager, cada clúster puede exponer sus pods que alojan la aplicación Ops Manager individualmente mediante un servicio de LoadBalancertipo.

Crear un servicio de LoadBalancer usando spec.externalConnectivity y redirige un dominio externo a la dirección IP externa de ese servicio. Incluso si configura más de una instancia de la aplicación Ops Manager, el servicio de Kubernetes envía el tráfico de manera rotativa a todos los Pods disponibles que alojan la aplicación Ops Manager.

Dado que el operador de Kubernetes no admite el equilibrio de carga del tráfico a todos los pods en todos los clústeres de Kubernetes, debe configurar el equilibrio de carga fuera de la configuración del operador de Kubernetes.

Los siguientes ejemplos y diagramas ilustran algunas de las muchas formas en las que se puede configurar el balanceo de carga en varios clústeres de Kubernetes.

Configura un balanceador de carga de red externo (un proxy passthrough) para todos los clústeres de Kubernetes que alojan la aplicación Ops Manager y la base de datos de la aplicación. La aplicación Ops Manager es sin estado. El equilibrador de carga puede reenviar el tráfico al servicio LoadBalancer de cada clúster de forma rotativa, o a un clúster a la vez, si configuras el equilibrador de carga de tal manera que, mientras un clúster está activo, el otro clúster está pasivo. El siguiente diagrama ilustra este enfoque.

Diagrama que muestra el ejemplo de alto nivel de redes de la implementación de la aplicación Ops Manager en varios clústeres de Kubernetes donde el tráfico es distribuido por un balanceador de carga externo.
haga clic para ampliar

En este diagrama:

  1. El operador de Kubernetes crea un servicio externo de tipo LoadBalancer, denominado <om_resource_name>-svc-ext, con una dirección IP externa asignada, en cada clúster nodo. Puedes configurar este servicio globalmente para todos los clústeres nodo utilizando spec.externalConnectivity. O, si este servicio es específico para cada clúster nodo, puedes configurarlo usando spec.clusterSpecList.externalConnectivity.

    Cada servicio que el Operador de Kubernetes crea para la aplicación Ops Manager siempre contiene todos los Pods que alojan la aplicación Ops Manager del clúster actual.

Utilice las capacidades de equilibrio de carga entre clústeres proporcionadas por una malla de servicios.

En cada clúster de Kubernetes, el Kubernetes Operator crea un servicio, llamado <om_resource_name>-svc, que puedes usar para distribuir el tráfico a todos los Pods disponibles que hospedan las instancias de la aplicación Ops Manager en todos los clústeres nodo.

Puedes implementar un componente proxy, como Nginx o HAProxy, en uno de los clústeres, exponerlo externamente a través de su FQDN público de Internet y configurar el proxy para redirigir todo el tráfico de red a través del pasante TCP al servicio llamado <om_resource_name>-svc.<namespace>.svc.cluster.local.

El siguiente diagrama ilustra este enfoque.

Diagrama que muestra el ejemplo a alto nivel de la implementación de la aplicación Ops Manager en múltiples clústeres de Kubernetes, donde el tráfico se distribuye mediante un balanceador de carga dentro de un service mesh y se utiliza un servicio proxy.
haga clic para ampliar

En este diagrama:

  1. En cada clúster miembro, el operador de Kubernetes crea un servicio de tipo al ClusterIP que se puede acceder <om_resource_name>-svc.<namespace>.svc.cluster.local mediante. Este servicio contiene en sus puntos finales todos los pods implementados en este clúster miembro.

  2. El tráfico entre clústeres de Kubernetes es gestionado por el service mesh. Cuando el Operador de Kubernetes crea servicios en cada clúster nodo para la Aplicación Ops Manager, el Operador de Kubernetes no asigna un sufijo de índice de clúster a los nombres de estos servicios. Por lo tanto, el service mesh puede realizar el equilibrio de carga de tráfico en todos los Pods que hospeden la aplicación Ops Manager en todos los clústeres.

  3. En cada clúster nodo, el Operador de Kubernetes implementa un StatefulSet llamado <om_resource_name>-<cluster-index>. Por ejemplo, om-0 es el nombre del StatefulSet para el nodo clúster con el índice 0.

  4. Aunque cada clúster tiene implementado un servicio <om_resource_name>-svc ClusterIP, este no gestiona el tráfico del usuario. Cuando el usuario accede al servicio en Member Cluster 1, la malla de servicios gestiona el tráfico.

  5. Cada pod que hospeda la aplicación Ops Manager lleva el nombre de su StatefulSet. Por ejemplo, om-1-2 es el nombre del pod número 2 en el clúster con el índice 1.

Volver

Diagrama

En esta página