IBM Cloud Docs
Escalado de disco, memoria y CPU

Escalado de disco, memoria y CPU

Puede ajustar manualmente la cantidad de recursos disponibles en su despliegue de IBM Cloud® Messages for RabbitMQ para ajustarlos a su carga de trabajo y al tamaño de sus datos.

Desglose de recursos

Los despliegues de Messages for RabbitMQ tienen dos miembros de datos en un clúster, y los recursos se asignan a los tres miembros por igual. Por ejemplo, el almacenamiento mínimo de un despliegue de RabbitMQ es de 3072 MB, lo que equivale a un tamaño inicial de 1024 MB por miembro. La RAM mínima para un despliegue de RabbitMQ es de 3072 MB, lo que equivale a una asignación inicial de 1024 MB por miembro.

La facturación se basa en la cantidad total de recursos que se asignan al servicio.

Uso de disco

El almacenamiento muestra la cantidad de espacio de disco que se asigna a su servicio. Cada miembro obtiene una parte igual del espacio asignado. Los datos se replican en los tres miembros de datos del clúster de RabbitMQ, por lo que la cantidad total de almacenamiento que utiliza tiene aproximadamente tres veces el tamaño del conjunto de datos.

La asignación de disco afecta al rendimiento del disco, los discos más grandes tienen un rendimiento superior. El rendimiento de IOPS (operaciones de entrada/salida por segundo) de línea base por segundo para el disco es de 10 IOPS para cada GB. Alcanzar los límites de IOPS provoca constantemente retrasos en el rendimiento y el procesamiento de mensajes, lo que puede aliviarse mediante el escalado del espacio de disco.

El almacenamiento no se puede desescalar. Si el tamaño de su conjunto de datos ha disminuido, puede recuperar espacio realizando una copia de seguridad y restaurándola en un nuevo despliegue.

RAM

RabbitMQ regula las publicaciones cuando detecta que utilizan el 40 % de la memoria disponible para evitar que el uso de memoria crezca de forma descontrolada durante las puntas de actividad. Si constata que alcanza habitualmente el límite, puede asignar más memoria a su despliegue. Al añadir memoria a la asignación total, se añade memoria a los miembros por igual.

Reequilibrio de colas

Si observa que un nodo de RabbitMQ ocupa significativamente más recursos que otro, es probable que las colas no se hayan distribuido de forma uniforme entre los nodos. Esto puede suceder por las siguientes razones:

  • Solo está conectado a una de las VIP y todas las colas se crean en un único nodo.
  • Se ha producido un reinicio secuencial, que mueve las colas al nodo que se ha reiniciado primero.

El desencadenamiento de una distribución uniforme de colas provoca la carga hasta que todas las colas se distribuyen de forma uniforme, por lo que esta acción no se debe realizar mientras el despliegue esté bajo presión o desescalado.

Para distribuir las colas uniformemente, puede utilizar la API de gestión de RabbitMQ para ejecutar una llamada de POST https /api/rebalance/queues con su despliegue.

Núcleos dedicados

Puede habilitar o aumentar la asignación de CPU para el despliegue. Con núcleos dedicados, el grupo de recursos recibe un host de un solo arrendatario con una reserva de comparticiones de CPU. Entonces al despliegue se le garantiza el número mínimo de CPU que especifique. El valor predeterminado de 0 núcleos dedicados utiliza recursos de cálculo en hosts compartidos. Si se pasa de un número de CPU de 0 a >0, se suministra y se traslada el despliegue a nuevos hosts y, como parte de ese traslado, se reinician las bases de datos. Si se pasa de un número de CPU >0 a 0, el despliegue se traslada a un host compartido y también se reinician las bases de datos como parte del traslado.

Consideraciones del escalado

  • El escalado del despliegue puede hacer que se reinicie RabbitMQ. Si el despliegue escalado debe trasladarse a un host con más capacidad, las bases de datos se reinician como parte de la acción.

  • Al desescalar la RAM o la CPU no se activa ningún reinicio.

  • El disco no se puede desescalar.

  • Algunas operaciones de escalado pueden tardar más en ejecutarse que otras. Al habilitar los núcleos dedicados, el despliegue se traslada a su propio host y puede llevar más tiempo que añadir más núcleos. De forma similar, aumentar drásticamente la CPU, la RAM o el disco puede llevar más tiempo que realizar incrementos más pequeños, considerando que se tienen que suministrar más recursos de hardware subyacentes.

  • Las operaciones de escalado se registran en IBM Cloud® Activity Tracker.

  • Si encuentra tendencias coherentes en el uso de recursos o desea configurar el escalado cuando se alcanzan determinados umbrales de recursos, consulte Escalado automático.

Escalado a través de la UI

Una representación visual de los miembros de datos y su asignación de recursos está disponible en la pestaña Recursos de la página Gestionar del despliegue.

El panel Recursos de escala en Recursos{: caption="Figura 1. El panel de Recursos de escala en Recursos" caption-side="bottom "}

Ajuste el control deslizante para aumentar o reducir los recursos asignados al servicio. El control deslizante controla la cantidad de memoria o de disco que se asigna por miembro. La interfaz de usuario utiliza actualmente una resolución con menor precisión de incrementos de 8 GB para el disco e incrementos de 1 GB para la memoria. La IU muestra el total de memoria o de disco asignado mediante la posición del control deslizante. Pulse Escalar para activar las operaciones de escalado y volver a la visión general del panel de control.

Recursos y escalado en la CLI

El plugin de Cloud Databases de la CLI de IBM Cloud admite la visualización y el escalado de recursos en el despliegue. Utilice el mandato cdb deployment-groups para ver la información de recursos actual para el servicio, incluyendo qué grupos de recursos son ajustables. Para escalar cualquiera de los grupos de recursos disponibles, utilice el mandato cdb deployment-groups-set.

Por ejemplo, el mandato para ver los grupos de recursos para un despliegue denominado "example-deployment":
ibmcloud cdb deployment-groups example-deployment

Esto genera la salida:

Group   member
Count   3
|
+   Memory
|   Allocation              3072mb
|   Allocation per member   1024mb
|   Minimum                 3072mb
|   Step Size               384mb
|   Adjustable              true
|
+   CPU
|   Allocation              0
|   Allocation per member   0
|   Minimum                 9
|   Step Size               3
|   Adjustable              true
|
+   Disk
|   Allocation              3072mb
|   Allocation per member   1024mb
|   Minimum                 3072mb
|   Step Size               3072mb
|   Adjustable              true

El despliegue tiene tres miembros, con 3072 MB de RAM y de disco asignados en total. La asignación "per member" es de 1024 MB de RAM y 1024 MB de disco. El valor mínimo es el más bajo que se puede establecer la asignación total. Step Size (tamaño de paso) es la cantidad más pequeña a la que se puede ajustar la asignación total.

El mandato cdb deployment-groups-set permite establecer asignación total de RAM o de disco total, en MB. Por ejemplo, para escalar la memoria de "example-deployment" en 2048 MB de RAM para cada miembro de memoria (para una memoria total de 6144 MB), utilice el mandato:
ibmcloud cdb deployment-groups-set example-deployment member --memory 6144

Escalado en la API

El Punto final básico que se muestra en el panel Visión general del servicio proporciona el URL base para acceder a este despliegue a través de la API. Utilícelo con el punto final /groups si necesita gestionar o automatizar el escalado mediante programación.

Para ver los recursos actuales y escalables de un despliegue,

curl -X GET -H "Authorization: Bearer $APIKEY" 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/groups'

Para escalar la memoria de un despliegue a 2048 MB de RAM para cada miembro de memoria (para una memoria total de 6144 MB).

curl -X PATCH 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/groups/member' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"memory": {
        "allocation_mb": 6144
      }
    }'

Para obtener más información, consulte la Referencia de API.