Optimización del rendimiento de ODF para cargas de trabajo de virtualización
Nube privada virtual 4.20 y más tarde Solo nodos de trabajo «bare metal»
Puedes mejorar el rendimiento del almacenamiento de Data Foundation (ODF) de OpenShift para cargas de trabajo de virtualización seleccionando el perfil de rendimiento adecuado, ajustando los límites de recursos de los pods de OSD y configurando las operaciones con datos masivos. Estas opciones se aplican a los clústeres de Red Hat OpenShift on IBM Cloud con clústeres de OpenShift Virtualization y Red Hat OpenShift Virtualization Service implementados manualmente.
Antes de empezar
- Debes tener acceso de tipo «
cluster-admin» al clúster. - Instala o actualiza la CLI de IBM Cloud y la CLI de
oc. - ODF debe estar instalado y en buen estado antes de ajustar los límites de recursos o configurar los grupos de almacenamiento. Para comprobar el estado de ODF, consulta « Comprobación del estado del clúster de Ceph ».
Selección de un perfil de rendimiento ODF
ODF ofrece dos perfiles de rendimiento que controlan la asignación de CPU y memoria para los componentes de almacenamiento. Elige el perfil que mejor se adapte a tu volumen de trabajo.
- Rendimiento
- Asigna más CPU y memoria que el perfil « Equilibrado ». Utiliza este perfil para cargas de trabajo de « VM » que requieran un alto rendimiento y una baja latencia, como bases de datos o aplicaciones con mucho tráfico.
- Equilibrado
- Consume una cantidad moderada de CPU y memoria. Utiliza este perfil para cargas de trabajo de uso general, entornos mixtos o implementaciones optimizadas en cuanto a costes.
Al implementar ODF, selecciona « Rendimiento » en el campo « Perfil de recursos », dentro de « Almacenamiento de respaldo ». En los clústeres de servicios de virtualización, la opción «Rendimiento» está seleccionada de forma predeterminada.
Puedes configurar el perfil desde la consola o la CLI.
- Consola: clústeres estándar de « Red Hat OpenShift on IBM Cloud »: al instalar el complemento ODF, selecciona « Rendimiento » en la sección « Almacenamiento de respaldo ».
- Consola - Clústeres del servicio de virtualización: La opción «Rendimiento» está seleccionada de forma predeterminada. Para cambiarlo, selecciona «Editar» en la ficha « OpenShift Data Foundation» de la sección «Integraciones de virtualización» durante la creación del clúster.
Esta opción solo se aplica a los clústeres estándar de « Red Hat OpenShift on IBM Cloud ». En el caso de los clústeres del Servicio de Virtualización, el perfil se configura durante la creación del clúster.
Desde la CLI, incluye « --param "resourceProfile=performance" » al habilitar el complemento:
ibmcloud oc cluster addon enable openshift-data-foundation \
-c <cluster-name> \
--version <addon-version> \
--param "odfDeploy=true" \
--param "osdStorageClassName=localblock" \
--param "autoDiscoverDevices=true" \
--param "resourceProfile=performance" \
--param "setDefaultStorageClassForVirtualization=true"
Para conocer todos los parámetros de los complementos de ODF, consulta la referencia de parámetros de Data Foundation en OpenShift.
Configuración de los límites de recursos de los pods de OSD
Object Storage Los pods Daemon (OSD) almacenan datos y participan en la ubicación y la replicación de los mismos. En el caso de cargas de trabajo de virtualización con un alto volumen de E/S, puedes aumentar los límites de CPU y memoria en los pods de OSD para ayudar a reducir los cuellos de botella.
Comprobar los límites actuales de recursos de OSD
Antes de modificar los límites de recursos, comprueba la configuración actual de la CPU y la memoria de tus pods de OSD. Toma nota de las solicitudes y los límites actuales para poder compararlos más adelante con el uso real y los valores actualizados.
oc get pods -n openshift-storage -l app=rook-ceph-osd \
-o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]} Container: {.name}{"\n"} Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"} Limits - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'
Revisa los resultados para identificar las solicitudes y los límites actuales de CPU y memoria de cada contenedor OSD. Compara estos valores con el consumo real mediante el siguiente comando. Si el uso de la CPU o de la memoria se acerca constantemente a los límites configurados, aumentar dichos límites podría ayudar a reducir los cuellos de botella.
Para comprobar el consumo real de recursos, ejecuta el siguiente comando y compara el uso de la CPU y la memoria con los límites que has anotado:
oc adm top pods -n openshift-storage -l app=rook-ceph-osd
Aumentar los límites de recursos de OSD
Si los límites de corriente son insuficientes para tu carga de trabajo de « VM », actualízalos editando el recurso « ocs-storagecluster ».
También puedes modificar los límites de otros pods de Rook-Ceph, como mon, mgr y rgw, en la configuración de ocs-storagecluster. Para obtener más información, consulta la solución 6959127 de Red Hat.
-
Abre el recurso del clúster de almacenamiento para editarlo.
oc edit storagecluster ocs-storagecluster -n openshift-storage -
En la entrada correspondiente de «
storageDeviceSets», añade o actualiza el campo «resources». En el siguiente ejemplo parcial se establece un límite de 4 CPU y 24 Gi de memoria, y una solicitud de 2 CPU y 24 Gi de memoria:storageDeviceSets: - name: ocs-deviceset resources: limits: cpu: "4" memory: "24Gi" requests: cpu: "2" memory: "24Gi"Las solicitudes de CPU y memoria deben ser inferiores o iguales a los límites.
-
Guarde y salga del editor.
Una vez guardados los cambios, los pods de OSD se reinician automáticamente. Espera a que finalice el reinicio progresivo antes de realizar otras operaciones de almacenamiento.
Comprueba los límites de recursos actualizados
Una vez finalizada la reinicio progresivo, comprueba que los límites actualizados se hayan aplicado a todos los pods de OSD.
-
Supervisa el reinicio progresivo para comprobar que todos los pods de OSD vuelvan al estado «
Running». El reinicio habrá finalizado cuando todos los pods de OSD muestren el estado «Running» y ninguno muestre «Pending» o «Terminating».oc get pods -n openshift-storage | grep osd | grep -v prepare | grep -v rotation -
Comprueba que los nuevos valores de los recursos estén en vigor.
oc get pods -n openshift-storage -l app=rook-ceph-osd \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]} Container: {.name}{"\n"} Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"} Limits - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'Comprueba que los valores de la CPU y la memoria coincidan con los que has configurado.
Configuración del indicador de procesamiento masivo para operaciones con grandes volúmenes de datos
En el caso de operaciones con grandes volúmenes de datos, como las migraciones de « VM », las importaciones masivas o el archivo de datos, activar el indicador «bulk» en un bloque de Ceph puede mejorar la distribución inicial de los datos entre los OSD y reducir la sobrecarga que supone el reequilibrio.
El indicador «bulk» se utiliza habitualmente para:
- VM migraciones e importaciones de discos que implican varios TB de datos.
- Operaciones de copia de seguridad y restauración.
- Cargas iniciales de datos para nuevas aplicaciones.
- Grupos de archivo de datos.
Para configurar un recurso « CephBlockPool » con el indicador «bulk» activado, sigue estos pasos.
-
Crea o actualiza la definición del recurso
CephBlockPoolpara que la secciónparametersincluyabulk: "true".apiVersion: ceph.rook.io/v1 kind: CephBlockPool metadata: name: <pool-name> namespace: openshift-storage spec: replicated: size: 3 parameters: bulk: "true" -
Aplique el archivo de configuración.
oc apply -f <pool-config-file>.yamlUna vez aplicada la configuración, Ceph podrá distribuir los nuevos datos de forma más uniforme por todo el pool desde el principio. Este comportamiento puede reducir la necesidad de reequilibrar a medida que se va llenando el fondo común.
Comprobación del estado del clúster de Ceph
Supervisa periódicamente tu clúster de Ceph para detectar problemas de rendimiento y garantizar la integridad de los datos. Realiza comprobaciones de estado antes y después de realizar cambios en la configuración.
Realiza una comprobación básica del estado del sistema
Ejecuta el siguiente comando para obtener un resumen general del estado de Ceph. Un clúster en buen estado devuelve « HEALTH_OK ».
oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph status
Para ver las advertencias o los errores activos, ejecuta el siguiente comando :
oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph health detail
Comprender los estados de los clústeres
El resultado de la orden « ceph status » incluye los estados de los grupos de colocación (PG) que indican el estado de los datos.
- Activo/limpio
- El estado ideal. Todos los grupos de ubicación están activos, todos los datos están replicados y no se está transfiriendo ningún dato. No es necesaria ninguna acción.
- Activo + reasignado, activo + en proceso de reposición, activo + en recuperación
- Se están redistribuyendo los datos. Estos estados son normales tras un cambio en los recursos del OSD, la sustitución de un nodo o una operación de escalado. Espera a que el clúster vuelva a un estado «
active/clean» antes de realizar cambios adicionales.
Ejemplo de resultado correcto:
HEALTH_OK
Ejemplo de resultado durante el reequilibrio:
HEALTH_WARN
Degraded data redundancy: 123/456 objects degraded (26.974%)
Recovery 50/456 objects degraded (10.965%)
Comprobar el grupo de asignación y el estado del OSD
Para obtener una visión más detallada de la distribución de los datos y del estado del OSD, realiza las siguientes comprobaciones.
-
Comprueba el estado de los grupos de asignación para identificar aquellos que no se encuentren en el estado «
active+clean».oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph pg stat -
Comprueba el estado de cada OSD para asegurarte de que los OSD se encuentran en
upyin.oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status