El motor de colocación de VMware Cloud Director determina en qué recursos, incluidos los grupos de recursos, los almacenes de datos y las redes o grupos de redes, se colocarán las máquinas virtuales (MV) en una vApp. En función de los requisitos de cada máquina virtual, el motor toma la decisión de colocación de forma independiente para cada máquina virtual en una vApp.

El motor de colocación se ejecuta en los siguientes escenarios.
Nota: VMware Cloud Director coloca las máquinas virtuales dentro de una vApp de forma independiente en función de los requisitos de cada máquina virtual.
  • Cuando se crea una máquina virtual, el motor de colocación determina en qué grupo de recursos, almacén de datos y grupo de redes se colocará.
  • Cuando se inicia una máquina virtual y esta no se enciende, VMware Cloud Director puede mover de forma selectiva la máquina virtual a otro grupo de recursos, almacén de datos o grupo de redes.
  • Cuando se edita una máquina virtual para cambiar su almacén de datos, recurso o configuración de red, VMware Cloud Director puede mover la máquina virtual a un almacén de datos y a un grupo de recursos diferentes que admitan la nueva configuración de la máquina virtual. VMware Cloud Director mueve una máquina virtual solo cuando los recursos actuales no pueden admitir los nuevos requisitos.
  • Cuando se migran máquinas virtuales a diferentes grupos de recursos.
  • Cuando un centro de datos virtual (VDC) de organización detecta máquinas virtuales creadas en cualquier grupo de recursos de vCenter Server que respalda el VDC y el sistema construye una vApp simplificada para que se incluya en ella cada máquina detectada.
El motor de colocación utiliza los siguientes criterios para seleccionar grupos de recursos idóneos para una máquina virtual.
  • Capacidad de CPU
  • Capacidad de memoria
  • Número de CPU virtuales
  • Versión de hardware admitida por el host y permitida por el VDC de proveedor
  • Reglas de afinidad

El motor de colocación filtra los grupos de recursos desactivados de la lista de candidatos. Cuando es posible, VMware Cloud Director coloca las máquinas virtuales en el mismo clúster de hosts que otras máquinas virtuales en el VDC de organización.

El motor de colocación utiliza los siguientes criterios para seleccionar almacenes de datos idóneos para las máquinas virtuales.
  • Capacidad de almacenamiento
  • Directivas de almacenamiento
  • Requisitos de afinidad entre máquinas virtuales
  • Si está IOPS activado, la capacidad de IOPS y las IOPS de los discos de máquina virtual

En la mayoría de los casos, el motor de colocación retira de la lista de candidatos los almacenes de datos desactivados y los que superan el umbral rojo. El motor no filtra estos almacenes de datos cuando se importa una máquina virtual desde vCenter Server.

El motor de colocación utiliza el nombre de red para seleccionar grupos de redes idóneos para una vApp y sus máquinas virtuales.

Después de seleccionar un conjunto de recursos idóneos, el motor de colocación clasifica los recursos y selecciona la mejor ubicación para cada máquina virtual en función de la CPU, la RAM virtual y la configuración de almacenamiento de cada máquina virtual.

Al clasificar los recursos, el motor de colocación examina el uso de los recursos actuales y el uso estimado de recursos futuros. El uso estimado futuro se calcula en función de las máquinas virtuales apagadas actualmente situadas en un determinado grupo de recursos y su uso previsto una vez encendidas. En el caso de la CPU y la memoria, el motor de colocación considera la capacidad actual sin reservar, el uso máximo y la capacidad estimada futura sin reservar. En el caso del almacenamiento, el motor considera la capacidad aprovisionada agregada que suministra el clúster al que pertenece cada grupo de recursos. El motor de colocación considera, a continuación, los indicadores ponderados de la idoneidad actual y futura de cada grupo de recursos.

Cuando es necesario realizar un movimiento, el motor de colocación favorece los grupos de recursos con más capacidad de CPU, memoria y almacenamiento sin reservar. Asimismo, otorga una preferencia más baja a los clústeres amarillos, de forma que estos solo se seleccionan si no hay ningún otro clúster disponible que cumpla los criterios de colocación. Al importar una máquina virtual desde vCenter Server, si la colocación de la máquina virtual es satisfactoria, para minimizar el movimiento, el motor ignora los umbrales.

Cuando enciende una máquina virtual, VMware Cloud Director intenta encenderla en su ubicación actual. Si vCenter Server notifica un error de capacidad de CPU y memoria del host, VMware Cloud Director intenta usar el grupo de recursos dos veces antes de tratar de mover la máquina virtual a los otros grupos de recursos compatibles en el VDC de organización. Al volver a ejecutar el motor de colocación para intentar encontrar un grupo de recursos compatible, VMware Cloud Director excluye los grupos de recursos probados anteriormente y con errores. Si no hay grupos de recursos adecuados conectados al almacén de datos en el que se encuentran los VMDK, mover una máquina virtual a otro grupo de recursos puede provocar la migración de los VMDK de la máquina virtual a un almacén de datos diferente. Si se produce un error en la colocación de máquinas virtuales en todas las ubicaciones que cumplen los requisitos de la máquina virtual, VMware Cloud Director devuelve un mensaje de error que indica que la colocación no es factible. Si existe una afinidad con el almacén de datos actual y el almacén de datos no está disponible, el motor de colocación devuelve un error que indica que la colocación no es factible. Este es un estado normal del sistema cuando funciona casi a plena capacidad y la solución propuesta no cumple todos los requisitos en el momento actual. Para corregir el error, puede agregar o liberar recursos e iniciar un reintento. Cuando no se requiere ningún almacén de datos específico, el motor de colocación selecciona un almacén de datos en el clúster de hosts candidato o en el grupo de recursos que cumple con los demás requisitos, como la directiva de almacenamiento, la capacidad de almacenamiento y la capacidad de IOPS.

En las situaciones de implementación simultánea cuando un grupo de recursos se encuentra cerca del máximo de su capacidad, la validación de ese grupo de recursos puede producirse aunque este carezca de los recursos suficientes para admitir la máquina virtual. En estos casos, la máquina virtual no puede encenderse. Si una máquina virtual no se enciende en esta situación y hay más de un grupo de recursos que respalda el VDC, para solicitar a VMware Cloud Director que migre la máquina virtual a un grupo de recursos diferente, vuelva a iniciar la operación de encendido.

Cuando el clúster al que pertenece un grupo de recursos se encuentra cerca del máximo de su capacidad, una máquina virtual de ese grupo de recursos no podrá encender si ningún host individual tiene capacidad suficiente para encender la máquina virtual. Esto se produce como resultado de la fragmentación de la capacidad a nivel de clúster. En estos casos, un administrador del sistema debe migrar algunas máquinas virtuales fuera del clúster para que este mantenga una capacidad disponible suficiente.

Algoritmo del motor de colocación de máquinas virtuales

El algoritmo de colocación selecciona un clúster de hosts de la lista de clústeres de hosts que tienen perfiles de almacenamiento necesarios disponibles y satisfacen todas las reglas existentes de afinidad o antiafinidad de máquina virtual-máquina virtual y máquina virtual-host. VMware Cloud Director calcula la solución de colocación mediante varias puntuaciones. Para cambiar el comportamiento del motor, puede utilizar la herramienta de administración de celdas para modificar los parámetros configurables que comienzan con el símbolo de guion bajo (_).
  1. Para cada clúster de hosts, el motor de colocación de las cargas de trabajo calcula una capacityScore, una futureCapacityScore y una reservationScore. El motor de colocación calcula cada puntuación por separado para la CPU, la memoria y el almacenamiento.
    capacityScore: (not available in some cases ) 
    
    CPU = (cpuUnreservedCapacityMHz - (cupBurstMHz * _cpuBurstRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memBurstMB * _memoryBurstRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    futureCapacityScore (not available in some cases) 
    
    CPU = (cpuUnreservedCapacityMHz - (cpuUndeployedReservationMHz * _futureDeployRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memUndeployedReservationMB * _futureDeployRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    reservationScore: (used for capacityScore and futureCapacityScore when those scores are unavailable) 
    
    CPU = cpuUnreservedCapacityMHz / cpuRequirementMHz 
    Memory = memoryUnreservedCapacityMB / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
  2. Para cada clúster de hosts, el motor de colocación calcula una weightedCapacityScore para CPU, memoria y almacenamiento.
    weightedCapacityScore = capacityScore * _currentScoreWeight + futureCapacityScore * (1 - _currentScoreWeight)

    Cada weightedCapacityScore es un índice entre 0 y 1, con valores más altos para representar más recursos disponibles. Los valores de weightedCapacityScore se pueden comparar entre diferentes tipos de recursos, como por ejemplo CPU, memoria y almacenamiento, ya que representan una medida de disponibilidad que no tiene unidades. Un valor mayor de weightedCapacityScore significa una mayor disponibilidad del recurso correspondiente en el clúster de hosts.

  3. El motor de colocación verifica que haya suficientes recursos para CPU, memoria y almacenamiento.
    totalAvailable * _[memory|cpu|storage]headRoom < free / UnreservedCapacity
  4. El motor de colocación ordena la lista de clústeres de hosts basándose en la weightedCapacityScore, de modo que el clúster de hosts menos restringido sea el primero y el clúster de hosts más restringido sea el último.
  5. El motor de colocación procesa cada clúster de hosts en la lista.
    • Si se debe evitar un clúster de hosts, por ejemplo, debido a una regla de antiafinidad, el motor lo agrega a avoidHubList.
    • Si el clúster de hosts no tiene suficientes recursos adicionales, el motor lo agrega a noHeadRoomHubList.
    • Si se prefiere un clúster de hosts, por ejemplo, debido a una regla de afinidad sólida o el clúster de hosts actual, el motor los agrega a preferredHubList.
    • Todos los demás clústeres de hosts van a acceptableHubList.

    Dentro de cada lista, el clúster de hosts con mayor preferencia es el primero y el de menor preferencia es el último.

  6. El motor integra las cuatro listas.

    preferredHubList + acceptableHubList + noHeadRoomHubList + avoidHubList

    El motor ordena la lista resultante del clúster de hosts con mayor preferencia al de menor preferencia.

  7. El motor de colocación selecciona el primer clúster de hosts de la lista como hub de destino.

Parámetros ajustables

Para influir en varios umbrales de algoritmos de selección, existen varios parámetros que puede personalizar. Sin embargo, solo los administradores de proveedores de servicios con conocimientos avanzados de las operaciones de VMware Cloud Director deben intentar cambiar estos parámetros respecto a sus valores predeterminados, ya que se podrían producir resultados indeseables e inesperados. Pruebe primero los cambios de parámetros en un entorno que no sea de producción.

Puede personalizar los siguientes parámetros mediante la Herramienta de administración de celdas.

Parámetro Descripción
vcloud.placement.ranking.currentScoreWeight La importancia relativa del componente actual de la puntuación del clúster del hosts. El valor debe estar en [0.1]. Cuando el valor es 0, el motor clasifica el clúster de hosts solo en función de una puntuación futura. Cuando el valor es 1, el motor clasifica el clúster de hosts solo en función de la puntuación actual. El valor predeterminado es 0.5.

vcloud.placement.ranking.memoryBurstRatio

vcloud.placement.ranking.cpuBurstRatio

Porcentaje de colocación superior a la reserva de una máquina virtual que el clasificador utiliza para calcular la carga del clúster. El valor es de 0 a 1. 0 significa que una máquina virtual solo utiliza su reserva. 1 significa que la máquina virtual está totalmente ocupada. El valor predeterminado es 0.67.
vcloud.placement.ranking.futureDeployRatio El porcentaje de máquinas virtuales en este clúster de hosts que se espera que se implementen y que consuman memoria y CPU. El valor es de 0 a 1. El valor predeterminado es 0.5.

vcloud.placement.ranking.memoryHeadRoom

vcloud.placement.ranking.cpuHeadRoom

vcloud.placement.ranking.storageHeadRoom

Estos parámetros proporcionan el control para dejar recursos adicionales para el crecimiento en un clúster de hosts. El motor define la capacidad de aumento como un porcentaje de recursos no reservados. Por ejemplo, si vcloud.placement.ranking.memoryHeadRoom es 0.2 después de que un clúster de hosts tenga menos del 20 % de recursos disponibles, el motor lo considera como un clúster con capacidad de aumento de memoria insuficiente y lo clasificará como inferior a otros clústeres de hosts. El valor debe estar comprendido entre 0 y 1. El valor predeterminado es 0.2.

Ejemplo:
./cell-management-tool manage-config -n vcloud.placement.ranking.memoryHeadRoom -v 0.3