Skip to main content
NetApp Solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Información general sobre el rendimiento y la validación en AWS FSx para NetApp ONTAP

Colaboradores

Se realizó una prueba de rendimiento de un clúster Kafka con la capa de almacenamiento montada en NFS de NetApp en AWS FSx para NetApp ONTAP. Los ejemplos de pruebas comparativas se describen en las siguientes secciones.

Apache Kafka en AWS FSx para NetApp ONTAP

Network File System (NFS) es un sistema de archivos de red ampliamente utilizado para almacenar grandes cantidades de datos. En la mayoría de las organizaciones, los datos se generan cada vez más a partir de aplicaciones de streaming como Apache Kafka. Estas cargas de trabajo requieren escalabilidad, baja latencia y una arquitectura de ingesta de datos sólida con funcionalidades de almacenamiento modernas. Para permitir el análisis en tiempo real y proporcionar información procesable, es necesaria una infraestructura bien diseñada y de alto rendimiento.

Kafka by design funciona con un sistema de archivos compatible con POSIX y se basa en el sistema de archivos para gestionar las operaciones de archivos, pero al almacenar datos en un sistema de archivos NFSv3, el cliente NFS de Kafka Broker puede interpretar las operaciones de archivos de forma diferente a un sistema de archivos local como XFS o Ext4. Un ejemplo común es el nombre de NFS Silly, que causó que los agentes de Kafka fallaran al expandir clústeres y volver a asignar particiones. Para hacer frente a este reto, NetApp ha actualizado el cliente NFS de Linux de código abierto con cambios que ahora están disponibles de forma general en RHEL8,7, RHEL9,1, y son compatibles con el lanzamiento actual de FSx para NetApp ONTAP, ONTAP 9.12.1.

Amazon FSx para NetApp ONTAP proporciona un sistema de archivos NFS en la nube totalmente gestionado, escalable y de alto rendimiento. Los datos de Kafka en FSx para NetApp ONTAP pueden escalarse para manejar grandes cantidades de datos y garantizar la tolerancia a fallos. NFS proporciona una gestión de almacenamiento centralizada y protección de datos para conjuntos de datos críticos y confidenciales.

Estas mejoras hacen posible que los clientes de AWS aprovechen FSx para NetApp ONTAP cuando ejecuten cargas de trabajo de Kafka en servicios de computación de AWS. Estos beneficios son:
* Reducir el uso de la CPU para reducir el tiempo de espera de E/S.
* Tiempo de recuperación de Kafka broker más rápido.
* Fiabilidad y eficiencia.
* Escalabilidad y rendimiento.
* Disponibilidad de la zona de multidisponibilidad.
* Protección de datos.

Información general sobre el rendimiento y la validación en AWS FSx para NetApp ONTAP

Se realizó una prueba de rendimiento de un clúster Kafka con capa de almacenamiento montada en NFS de NetApp en el cloud de AWS. Los ejemplos de pruebas comparativas se describen en las siguientes secciones.

Kafka en AWS FSx para NetApp ONTAP

Se realizó una prueba de rendimiento de un clúster de Kafka con AWS FSx para NetApp ONTAP en la nube de AWS. Esta evaluación comparativa se describe en las siguientes secciones.

Configuración de la arquitectura

La siguiente tabla muestra la configuración del entorno para un clúster Kafka usando AWS FSx para NetApp ONTAP.

Componente de plataforma Configuración del entorno

Kafka 3.2.3

  • 3 zookeepers – t2.pequeño

  • 3 servidores de broker: i3en.2xlarge

  • 1 x Grafana – c5n.2xgrande

  • 4 x productor/consumidor — c5n.2xgrande *

Sistema operativo en todos los nodos

RHEL8.6

AWS FSx para NetApp ONTAP

Multi-AZ con 4GB GB/s de rendimiento y 160000 000 IOPS

Configuración de NetApp FSx para NetApp ONTAP

  1. Para nuestras pruebas iniciales, hemos creado un sistema de archivos FSx for NetApp ONTAP con 2TB TB de capacidad y 40000 000 IOPS para un rendimiento de 2GB GB/s.

    [root@ip-172-31-33-69 ~]# aws fsx create-file-system --region us-east-2  --storage-capacity 2048 --subnet-ids <desired subnet 1> subnet-<desired subnet 2> --file-system-type ONTAP --ontap-configuration DeploymentType=MULTI_AZ_HA_1,ThroughputCapacity=2048,PreferredSubnetId=<desired primary subnet>,FsxAdminPassword=<new password>,DiskIopsConfiguration="{Mode=USER_PROVISIONED,Iops=40000"}

    En nuestro ejemplo, estamos poniendo en marcha FSx para NetApp ONTAP mediante la interfaz de línea de comandos de AWS. Tendrá que personalizar el comando de forma adicional en su entorno según sea necesario. FSX para NetApp ONTAP también se puede poner en marcha y gestionar a través de la consola de AWS para obtener una experiencia de puesta en marcha más sencilla y optimizada con menos entrada en la línea de comandos.

    Documentación En FSx para NetApp ONTAP, el número máximo de IOPS que se puede lograr para un sistema de archivos con un rendimiento de 2GB GB/s en nuestra región de prueba (EE. UU.-Este-1) es 80.000 iops. El número máximo total de iops para un sistema de archivos FSx para NetApp ONTAP es de 160.000 000 iops que requiere una puesta en marcha de 4GB GB/s de rendimiento para lograrlo, lo que demostraremos más adelante en este documento.

    Para obtener más información sobre las especificaciones de rendimiento de FSx para NetApp ONTAP, no dudes en visitar la documentación de AWS FSx para NetApp ONTAP aquí: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html .

    La sintaxis detallada de la línea de comandos para FSX “create-file-system” se puede encontrar aquí: https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html

    Por ejemplo, puede especificar una clave KMS específica en lugar de la clave maestra predeterminada de AWS FSx que se utiliza cuando no se especifica ninguna clave KMS.

  2. Al crear el sistema de archivos FSX for NetApp ONTAP, espere hasta que el estado de “ciclo de vida” cambie a “DISPONIBLE” en su retorno JSON después de describir su sistema de archivos de la siguiente manera:

    [root@ip-172-31-33-69 ~]# aws fsx describe-file-systems  --region us-east-1 --file-system-ids fs-02ff04bab5ce01c7c
  3. Valide las credenciales iniciando sesión en FSx for NetApp ONTAP SSH con el usuario de fsxadmin:
    Fsxadmin es la cuenta de administrador predeterminada para FSX para sistemas de archivos NetApp ONTAP en la creación. La contraseña para fsxadmin es la contraseña que se configuró al crear por primera vez el sistema de archivos, ya sea en la consola de AWS o con la CLI de AWS, como se completó en el paso 1.

    [root@ip-172-31-33-69 ~]# ssh fsxadmin@198.19.250.244
    The authenticity of host '198.19.250.244 (198.19.250.244)' can't be established.
    ED25519 key fingerprint is SHA256:mgCyRXJfWRc2d/jOjFbMBsUcYOWjxoIky0ltHvVDL/Y.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '198.19.250.244' (ED25519) to the list of known hosts.
    (fsxadmin@198.19.250.244) Password:
    
    This is your first recorded login.
  4. Una vez validadas sus credenciales, cree la máquina virtual de almacenamiento en el sistema de archivos FSx para NetApp ONTAP

    [root@ip-172-31-33-69 ~]# aws fsx --region us-east-1 create-storage-virtual-machine --name svmkafkatest --file-system-id fs-02ff04bab5ce01c7c

    Una máquina virtual de almacenamiento (SVM) es un servidor de archivos aislado con sus propias credenciales y extremos administrativos para administrar y acceder a los datos en FSx para volúmenes NetApp ONTAP y proporciona multi-tenancy de FSx para NetApp ONTAP.

  5. Una vez que haya configurado su máquina virtual de almacenamiento principal, SSH en el sistema de archivos FSX for NetApp ONTAP recién creado y cree volúmenes en la máquina virtual de almacenamiento usando el comando de ejemplo siguiente y, de manera similar, creamos volúmenes 6 para esta validación. En base a nuestra validación, mantenga el componente predeterminado (8) o menos constituyentes que proporcionará un mejor rendimiento a kafka.

    FsxId02ff04bab5ce01c7c::*> volume create -volume kafkafsxN1 -state online -policy default -unix-permissions ---rwxr-xr-x -junction-active true -type RW -snapshot-policy none  -junction-path /kafkafsxN1 -aggr-list aggr1
  6. Necesitaremos más capacidad en nuestros volúmenes para las pruebas. Amplíe el tamaño del volumen a 2TB TB y monte en la ruta de unión.

    FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN1 -new-size +2TB
    vol size: Volume "svmkafkatest:kafkafsxN1" size set to 2.10t.
    
    FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN2 -new-size +2TB
    vol size: Volume "svmkafkatest:kafkafsxN2" size set to 2.10t.
    
    FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN3 -new-size +2TB
    vol size: Volume "svmkafkatest:kafkafsxN3" size set to 2.10t.
    
    FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN4 -new-size +2TB
    vol size: Volume "svmkafkatest:kafkafsxN4" size set to 2.10t.
    
    FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN5 -new-size +2TB
    vol size: Volume "svmkafkatest:kafkafsxN5" size set to 2.10t.
    
    FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN6 -new-size +2TB
    vol size: Volume "svmkafkatest:kafkafsxN6" size set to 2.10t.
    
    FsxId02ff04bab5ce01c7c::*> volume show -vserver svmkafkatest -volume *
    Vserver   Volume       Aggregate    State      Type       Size  Available Used%
    --------- ------------ ------------ ---------- ---- ---------- ---------- -----
    svmkafkatest
              kafkafsxN1   -            online     RW       2.10TB     1.99TB    0%
    svmkafkatest
              kafkafsxN2   -            online     RW       2.10TB     1.99TB    0%
    svmkafkatest
              kafkafsxN3   -            online     RW       2.10TB     1.99TB    0%
    svmkafkatest
              kafkafsxN4   -            online     RW       2.10TB     1.99TB    0%
    svmkafkatest
              kafkafsxN5   -            online     RW       2.10TB     1.99TB    0%
    svmkafkatest
              kafkafsxN6   -            online     RW       2.10TB     1.99TB    0%
    svmkafkatest
              svmkafkatest_root
                           aggr1        online     RW          1GB    968.1MB    0%
    7 entries were displayed.
    
    FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN1 -junction-path /kafkafsxN1
    
    FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN2 -junction-path /kafkafsxN2
    
    FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN3 -junction-path /kafkafsxN3
    
    FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN4 -junction-path /kafkafsxN4
    
    FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN5 -junction-path /kafkafsxN5
    
    FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN6 -junction-path /kafkafsxN6

    En FSx para NetApp ONTAP, los volúmenes se pueden aprovisionar mediante thin provisioning. En nuestro ejemplo, la capacidad total de volumen extendido supera la capacidad total del sistema de archivos, por lo que necesitaremos ampliar la capacidad total del sistema de archivos para desbloquear la capacidad adicional de volumen aprovisionado que demostraremos en nuestro próximo paso.

  7. Después, para obtener más rendimiento y capacidad, ampliamos la capacidad de rendimiento de FSx para NetApp ONTAP de 2GB MB/s a 4GB MB/s y IOPS a 160000 GB, y la capacidad a 5 TB

    [root@ip-172-31-33-69 ~]# aws fsx update-file-system --region us-east-1  --storage-capacity 5120 --ontap-configuration 'ThroughputCapacity=4096,DiskIopsConfiguration={Mode=USER_PROVISIONED,Iops=160000}' --file-system-id fs-02ff04bab5ce01c7c

    La sintaxis detallada de la línea de comandos para FSX “update-file-system” se puede encontrar aquí:
    https://docs.aws.amazon.com/cli/latest/reference/fsx/update-file-system.html

  8. El FSX para volúmenes NetApp ONTAP está montado con opiones predeterminados y nconnect en los brókeres kafka

    En la siguiente imagen se muestra nuestra arquitectura final de un clúster kafka basado en FSx para NetApp ONTAP:

    Esta imagen muestra la arquitectura de un clúster Kafka basado en FSxN.

    • Informática. Utilizamos un clúster Kafka de tres nodos con un conjunto de zookeeper de tres nodos ejecutándose en servidores dedicados. Cada agente tenía seis puntos de montaje de NFS en seis volúmenes en la instancia de FSx para NetApp ONTAP.

    • Supervisión. Utilizamos dos nodos para una combinación de Prometheus-Grafana. Para generar cargas de trabajo, utilizamos un clúster de tres nodos independiente que podía producir y consumir este clúster Kafka.

    • Reducida. Utilizamos un FSx para NetApp ONTAP con seis volúmenes de 2TB GB montados. A continuación, el volumen se exportó al agente Kafka con un montaje NFS. Los volúmenes FSx para NetApp ONTAP se montan con 16 sesiones nconnect y opciones predeterminadas en los agentes Kafka.

Configuraciones de OpenMessage Benchmarking.

Utilizamos la misma configuración utilizada para el NetApp Cloud Volumes ONTAP y sus detalles están aquí -
https://docs.netapp.com/us-en/netapp-solutions/data-analytics/kafka-nfs-performance-overview-and-validation-in-aws.html#architectural-setup

Metodología de las pruebas

  1. Un clúster de Kafka fue aprovisionado según la especificación descrita anteriormente usando terraform y ansible. Terraform se utiliza para construir la infraestructura utilizando instancias de AWS para el clúster Kafka y ansible construye el clúster Kafka en ellos.

  2. Se activó una carga de trabajo de OMB con la configuración de carga de trabajo descrita anteriormente y el controlador de sincronización.

    sudo bin/benchmark –drivers driver-kafka/kafka-sync.yaml workloads/1-topic-100-partitions-1kb.yaml
  3. Se activó otra carga de trabajo con el controlador de rendimiento con la misma configuración de carga de trabajo.

    sudo bin/benchmark –drivers driver-kafka/kafka-throughput.yaml workloads/1-topic-100-partitions-1kb.yaml

Observación

Se utilizaron dos tipos distintos de controladores para generar cargas de trabajo con el fin de llevar a cabo una prueba de rendimiento de una instancia de Kafka que se ejecuta en NFS. La diferencia entre los controladores es la propiedad log flush.

Para un factor de replicación Kafka 1 y FSx para NetApp ONTAP:

  • Rendimiento total generado consistentemente por el controlador de sincronización: ~ 3218 Mbps y rendimiento máximo en ~ 3652 Mbps.

  • Rendimiento total generado consistentemente por el controlador de rendimiento: ~ 3679 Mbps y rendimiento máximo en ~ 3908 Mbps.

Para Kafka con factor de replicación 3 y FSx para NetApp ONTAP :

  • Rendimiento total generado consistentemente por el controlador de sincronización: ~ 1252 Mbps y rendimiento máximo en ~ 1382 Mbps.

  • Rendimiento total generado consistentemente por el controlador de rendimiento: ~ 1218 Mbps y rendimiento máximo en ~ 1328 Mbps.

En el factor de replicación Kafka 3, la operación de lectura y escritura se realizó tres veces en el FSX para NetApp ONTAP, en el factor de replicación Kafka 1, la operación de lectura y escritura es una vez en el FSX para NetApp ONTAP, por lo que en ambas validaciones, Somos capaces de alcanzar el rendimiento máximo de 4GB GB/s.

El controlador Sync puede generar un rendimiento constante a medida que los registros se vacíen en el disco al instante, mientras que el controlador de rendimiento genera ráfagas de rendimiento a medida que los registros se envían al disco de forma masiva.

Estos números de rendimiento se generan para la configuración de AWS determinada. Para requisitos de rendimiento más altos, los tipos de instancias se pueden escalar verticalmente para mejorar los números de rendimiento. El rendimiento total o la tasa total es la combinación de la tasa de producción y del consumidor.

Esta imagen muestra el rendimiento de kafka con RF1 y RF3

En el siguiente gráfico se muestra el rendimiento de 2GB MB/s FSx para NetApp ONTAP y 4GB GB/s para el factor de replicación Kafka 3. El factor de replicación 3 realiza la operación de lectura y escritura tres veces en el almacenamiento FSx para NetApp ONTAP. La tasa total para el controlador de rendimiento es de 881 MB/s, que lee y escribe la operación Kafka aproximadamente 2,64 GB/s en el sistema de archivos FSX de 2GB MB/s para NetApp ONTAP y la tasa total para el controlador de rendimiento es de 1328 MB/s que lee y escribe la operación kafka aproximadamente 3,98 GB/s. El rendimiento de Kafka es lineal y escalable basado en el rendimiento de FSx para NetApp ONTAP.

Esta imagen muestra el rendimiento de escalado horizontal de 2GB Gb/s y 4GB Gb/s.

En el siguiente gráfico se muestra el rendimiento entre la instancia de EC2 frente a FSx para NetApp ONTAP (Factor de replicación de Kafka: 3).

Esta imagen muestra la comparación de rendimiento de EC2 frente a FSxN en RF3.