El clúster de NSX Controller constituye un sistema distribuido horizontal en el que a cada nodo controlador se le asigna un conjunto de funciones que definen el tipo de tareas que puede implementar. Por motivos de resistencia y rendimiento, la implementación de máquinas virtuales de controladores debe hacerse en tres hosts distintos.

Se utilizan particiones para distribuir las cargas de trabajo entre los nodos del clúster de NSX Controller. Para ello, se dividen las cargas de trabajo de NSX Controller en diferentes particiones para que cada instancia de NSX Controller realice la misma cantidad de trabajo.

La imagen se describe en el texto adyacente.

Esto demuestra cómo distintos nodos de controladores funcionan como principales en determinadas entidades, como los conmutadores lógicos, el enrutadores lógicos y otros servicios. Cuando se le asigna una función a una instancia de NSX Controller principal, NSX Controller divide los diferentes enrutadores y conmutadores lógicos entre todas las instancias de NSX Controller disponibles en el clúster.

Cada cuadro con un número representa una partición que la instancia principal utiliza para dividir las cargas de trabajo. El conmutador lógico principal divide los conmutadores lógicos en particiones y les asigna diferentes instancias de NSX Controller. El enrutador lógico principal también divide los enrutadores lógicos en particiones y les asigna diferentes instancias de NSX Controller.

Estas particiones se asignan a las distintas instancias de NSX Controller que hay en ese clúster. El conmutador o enrutador principal de una función decide qué instancias de NSX Controller se asignan a cada partición. Si la partición 3 de los enrutadores recibe una solicitud, esta debe conectarse a la tercera instancia de NSX Controller. Si la recibe la partición 2 de los conmutadores lógicos, la procesa la segunda instancia de NSX Controller.

Si se produce un error en una de las instancias de NSX Controller del clúster, los enrutadores o conmutadores principales de las funciones redistribuyen las particiones entre el resto de clústeres disponibles. Para cada función, se elige un nodo controlador principal. Este es responsable de asignar las particiones a nodos controladores individuales, determinar si se produce un error en un nodo y reasignar las particiones a otros nodos. También informa a los hosts ESXi de los errores que se producen en el nodo del clúster.

La elección del nodo principal de cada función requiere el voto de la mayoría de todos los nodos activos e inactivos del clúster. Este es el motivo principal por el que un clúster de controladores debe implementarse siempre con un número de nodos impar.

ZooKeeper

ZooKeeper es la arquitectura de servidor cliente responsable del mecanismo del clúster de NSX Controller. Se utiliza para descubrir y crear el clúster de controladores. Cuando aparece un clúster, esto significa que, literalmente, aparece ZooKeeper entre todos los nodos. Los nodos de ZooKeeper pasan un proceso de elección para formar el clúster de controladores, que debe tener un nodo de ZooKeeper principal. Este proceso se lleva a cabo mediante una elección entre nodos.

Cuando se crea un nuevo nodo controlador, NSX Manager propaga su información al clúster actual, con la IP y el ID del nodo. De este modo, cada nodo conoce el número total de nodos disponibles para formar el clúster. En el proceso de elección del nodo de ZooKeeper principal, cada nodo tiene un voto para elegir al principal. La votación se activa de nuevo hasta que un nodo cuenta con la mayoría de los votos. Por ejemplo, en un clúster de tres nodos, el principal debe recibir un mínimo de dos votos.

Nota: Para evitar un escenario en el que no se pueda elegir un nodo de ZooKeeper principal, el clúster DEBE tener tres nodos.
  • Cuando se implementa el primer controlador, se trata de un caso especial y este se convierte en el principal. Así, al implementar los controladores, el primer nodo debe completar la implementación antes de que se agreguen otros nodos.
  • Al agregar el segundo controlador, también se trata de un caso especial, ya que el número de nodos es par en este momento.
  • Cuando se agrega el tercero, el clúster adquiere un estado estable admitido.

ZooKeeper admite un único error cada vez. Esto quiere decir que, si un nodo controlador está inactivo, debe recuperarse antes de que se produzcan otros errores. De lo contrario, pueden producirse problemas que dañen el clúster.

Administrador de dominios del plano de control central (CCP)

Esta capa se encuentra por encima de ZooKeeper y proporciona la configuración de ZooKeeper a todos los nodos para iniciar el proceso. El administrador de dominios actualiza la configuración entre todos los nodos del clúster y, a continuación, lleva a cabo una llamada de procedimiento remota para que se inicie el proceso de ZooKeeper.

Además, es el responsable de iniciar todos los dominios. Para unir el clúster, el dominio del CCP se comunica con el dominio del CCP de otros equipos. zk-cluster-bootstrap es el componente del dominio del CCP que ayuda a iniciar el clúster.

Relación de los controladores con otros componentes

El clúster del controlador mantiene y proporciona información sobre los conmutadores lógicos, enrutadores lógicos y los VTEP a los hosts ESXi.

Al crear un conmutador lógico, los nodos de los controladores dentro del clúster determinan qué nodo será el principal (master) o propietario (owner) de ese conmutador lógico. Esto también ocurre al agregar un enrutador lógico.

Cuando se establece la propiedad de un conmutador o enrutador lógico, el nodo la envía a los hosts ESXi de la zona de transporte del conmutador o enrutador. El proceso de elección del propietario y el envío de esta información a los hosts es lo que se conoce como hacer particiones. Tenga en cuenta que el nodo propietario es el responsable de todas las operaciones relacionadas con NSX de ese conmutador o enrutador lógico. El resto de los nodos no realizarán ninguna operación de ese conmutador lógico.

Un único propietario debe ser la fuente de información veraz de un conmutador lógico y un enrutador lógico. Por lo tanto, si el clúster de controladores se daña y se eligen dos o más nodos propietarios, cada host de la red tendrá una información distinta procedente de esa fuente del conmutador o enrutador lógico. Si esto sucede, se interrumpirá la red porque las operaciones del plano de datos y control de esta solo pueden tener una fuente de información veraz.

Si un nodo controlador se encuentra inactivo, el resto de los nodos del clúster vuelven a realizar las particiones para determinar la propiedad del conmutador lógico y del enrutador lógico.