Información general sobre el rendimiento y la validación en AWS FSx ONTAP
Se realizó una prueba de rendimiento de un clúster Kafka con la capa de almacenamiento montada en NFS de NetApp en FSx ONTAP de AWS. Los ejemplos de pruebas comparativas se describen en las siguientes secciones.
Apache Kafka en AWS FSx 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 ahora disponibles de forma general en RHEL8,7, RHEL9,1, y es compatible con el lanzamiento actual de FSx ONTAP, ONTAP 9.12,1.
Amazon FSx ONTAP proporciona un sistema de archivos NFS en la nube totalmente gestionado, escalable y de alto rendimiento. Los datos de Kafka en FSx 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 ONTAP cuando ejecuten cargas de trabajo de Kafka en servicios de computación de AWS. Estas ventajas son: * Reducción del uso de 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 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 ONTAP
Se realizó una prueba de rendimiento de un clúster Kafka con AWS FSx ONTAP para el rendimiento 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 ambiental para un clúster Kafka usando AWS FSx ONTAP.
Componente de plataforma | Configuración del entorno |
---|---|
Kafka 3.2.3 |
|
Sistema operativo en todos los nodos |
RHEL8.6 |
ONTAP FSX de AWS |
Multi-AZ con 4GB GB/s de rendimiento y 160000 000 IOPS |
Configuración de FSx ONTAP de NetApp
-
Para nuestras pruebas iniciales, hemos creado un sistema de archivos FSx 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 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 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 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 (US-East-1) es 80.000 iops. El número máximo total de iops para un sistema de archivos FSx ONTAP es de 160.000 000 iops que requiere una puesta en marcha de 4GB GB/s de rendimiento para lograrlo, lo cual demostraremos más adelante en este documento.
Para obtener más información sobre las especificaciones de rendimiento de FSx ONTAP, no dude en visitar la documentación de AWS FSx 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.
-
Al crear el sistema de archivos FSX 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
-
Valide las credenciales iniciando sesión en FSX ONTAP SSH con el usuario fsxadmin: Fsxadmin es la cuenta admin predeterminada para los sistemas de archivos FSX 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.
-
Una vez validadas sus credenciales, cree la máquina virtual de almacenamiento en el sistema de archivos FSx 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 administrativas y extremos para administrar y acceder a los datos en volúmenes FSx ONTAP y proporciona multi-tenancy de FSx ONTAP.
-
Una vez que haya configurado su máquina virtual de almacenamiento principal, SSH en el sistema de archivos FSX 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
-
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 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.
-
Después, para obtener más rendimiento y capacidad, ampliamos la capacidad de rendimiento de la ONTAP FSx de 2GB MB/s a 4GB MB/s y la 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 -
Los volúmenes FSX ONTAP están montados con opiones nconnect y predeterminados en los brókeres kafka
En la siguiente imagen se muestra nuestra arquitectura final de un clúster kafka basado en FSx ONTAP:
-
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 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 ONTAP con seis volúmenes de 2TB GB montados. A continuación, el volumen se exportó al broker Kafka con un montaje NFS. Los volúmenes FSx ONTAP se montan con 16 sesiones nconnect y opciones predeterminadas en los brokers Kafka.
-
Configuraciones de OpenMessage Benchmarking.
Utilizamos la misma configuración utilizada para el NetApp Cloud Volumes ONTAP y sus detalles están aquí -
link:kafka-nfs-performance-overview-and-validation-in-aws.html#architectural-setup
Metodología de las pruebas
-
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.
-
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
-
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 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 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 ONTAP, en el factor de replicación Kafka 1, la operación de lectura y escritura es una vez en el FSX ONTAP, por lo que en ambas validaciones, podemos alcanzar el rendimiento máximo de 4GB MB/seg.
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.
En el siguiente gráfico se muestra el rendimiento FSx ONTAP de 2GB GB/s y el rendimiento de 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 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 ONTAP de 2GB MB/s 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 ONTAP.
El siguiente gráfico muestra el rendimiento entre la instancia EC2 y el FSX ONTAP (Factor de replicación Kafka: 3).