Panoramica delle performance e convalida in AWS FSX ONTAP
Per ottenere performance ottimali in AWS FSX ONTAP, è stato effettuato un cluster Kafka con il layer storage montato su NFS NetApp. Gli esempi di benchmarking sono descritti nelle sezioni seguenti.
Apache Kafka in AWS FSX ONTAP
Network file System (NFS) è un file system di rete ampiamente utilizzato per la memorizzazione di grandi quantità di dati. Nella maggior parte delle organizzazioni i dati vengono sempre più generati da applicazioni di streaming come Apache Kafka. Questi carichi di lavoro richiedono scalabilità, bassa latenza e una solida architettura di acquisizione dei dati con moderne funzionalità di storage. Per consentire l'analisi in tempo reale e fornire informazioni utili, è necessaria un'infrastruttura ben progettata e dalle performance elevate.
Kafka di progettazione funziona con file system compatibile con POSIX e si affida al file system per gestire le operazioni sui file, ma quando si memorizzano i dati su un file system NFSv3, il client NFS del broker Kafka può interpretare le operazioni sui file in modo diverso da un file system locale come XFS o Ext4. Un esempio comune è il ridenominazione di NFS Silly, che ha causato il fallimento dei broker Kafka durante l'espansione dei cluster e la riallocazione delle partizioni. Per affrontare questa sfida, NetApp ha aggiornato il client NFS Linux open-source con le modifiche ora disponibili in RHEL8,7, RHEL9,1 e supportate dalla versione corrente di FSX ONTAP, ONTAP 9.12,1.
Amazon FSX ONTAP offre un file system NFS nel cloud completamente gestito, scalabile e dalle performance elevate. I dati di Kafka su FSX ONTAP possono scalare per gestire grandi quantità di dati e garantire la tolleranza agli errori. NFS offre gestione dello storage centralizzata e protezione dei dati per set di dati critici e sensibili.
Questi miglioramenti consentono ai clienti AWS di sfruttare FSX ONTAP durante l'esecuzione di carichi di lavoro Kafka sui servizi di calcolo AWS. Questi vantaggi sono: * Riduzione dell'utilizzo della CPU per ridurre il tempo di attesa i/o * tempi di recupero più rapidi del broker Kafka. * Affidabilità ed efficienza. * Scalabilità e performance. * Disponibilità multi-Availability zone. * Protezione dei dati.
Panoramica delle performance e convalida in AWS FSX ONTAP
Un cluster Kafka con il layer di storage montato su NetApp NFS è stato sottoposto a benchmark per le performance nel cloud AWS. Gli esempi di benchmarking sono descritti nelle sezioni seguenti.
Kafka in AWS FSX ONTAP
Per quanto riguarda le performance nel cloud AWS, è stato effettuato una valutazione comparativa di un cluster Kafka con AWS FSX ONTAP. Questo benchmarking è descritto nelle sezioni seguenti.
Configurazione architetturale
La tabella seguente mostra la configurazione ambientale per un cluster Kafka con AWS FSX ONTAP.
Componente della piattaforma | Configurazione dell'ambiente |
---|---|
Kafka 3.2.3 |
|
Sistema operativo su tutti i nodi |
RHEL8.6 |
ONTAP AWS FSX |
Multi-AZ con throughput di 4 GB/sec e 160000 IOPS |
Configurazione di NetApp FSX ONTAP
-
Per il test iniziale, abbiamo creato un file system FSX ONTAP con 2TB TB di capacità e 40000 IOPS per una velocità di throughput di 2GB GB/sec.
[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"}
Nel nostro esempio, stiamo implementando FSX ONTAP tramite l'interfaccia a riga di comando di AWS. Sarà necessario personalizzare ulteriormente il comando nell'ambiente in base alle esigenze. Inoltre, FSX ONTAP può essere implementato e gestito tramite la console AWS per un'esperienza di implementazione più semplice e ottimizzata con un input da riga di comando inferiore.
Documentazione in FSX ONTAP, gli IOPS massimi raggiungibili per un file system con throughput di 2GB GB/sec nella nostra regione di test (US-East-1) sono 80.000 iops. gli iops massimi totali per un file system FSX ONTAP sono 160.000 iops che richiede una distribuzione di throughput di 4GB GB/sec, come dimostreremo più avanti in questo documento.
Per ulteriori informazioni sulle specifiche delle prestazioni di FSX ONTAP, visitare la documentazione di AWS FSX ONTAP qui: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html .
La sintassi dettagliata della riga di comando per FSX "create-file-system" è disponibile qui: https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html
Ad esempio, è possibile specificare una chiave KMS specifica invece della chiave master AWS FSX predefinita utilizzata quando non viene specificata alcuna chiave KMS.
-
Durante la creazione del file system FSX ONTAP, attendere che lo stato "Lifecycle" (ciclo di vita) diventi "AVAILABLE" (DISPONIBILE) nel ritorno JSON dopo aver descritto il file system come segue:
[root@ip-172-31-33-69 ~]# aws fsx describe-file-systems --region us-east-1 --file-system-ids fs-02ff04bab5ce01c7c
-
Convalidare le credenziali accedendo a FSX ONTAP SSH con l'utente fsxadmin: Fsxadmin è l'account admin predefinito per i filesystem FSX ONTAP al momento della creazione. La password per fsxadmin è la password che è stata configurata durante la prima creazione del file system nella console AWS o con l'interfaccia CLI AWS, come è stato completato nella fase 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 volta convalidate le credenziali, creare la Storage Virtual Machine sul file system 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 Storage Virtual Machine (SVM) è un file server isolato con le proprie credenziali amministrative e i propri endpoint per l'amministrazione e l'accesso ai dati nei volumi FSX ONTAP e offre la multi-tenancy di FSX ONTAP.
-
Una volta configurata la Storage Virtual Machine primaria, SSH nel file system FSX ONTAP appena creato e creiamo volumi in una Storage Virtual Machine usando il comando di esempio seguente e, analogamente, creiamo 6 volumi per questa convalida. In base alla nostra convalida, mantenere il costituente predefinito (8) o un numero inferiore di costituenti che forniranno prestazioni migliori 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
-
Per i nostri test, abbiamo bisogno di capacità aggiuntiva nei nostri volumi. Estendere le dimensioni del volume a 2 TB e montarlo sul percorso di giunzione.
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
In FSX ONTAP è possibile eseguire il thin provisioning dei volumi. Nel nostro esempio, la capacità totale del volume esteso supera la capacità totale del file system, quindi sarà necessario estendere la capacità totale del file system per sbloccare la capacità aggiuntiva del volume sottoposto a provisioning, come illustrato nella fase successiva.
-
Quindi, per ulteriori performance e capacità, estendiamo la capacità di throughput di FSX ONTAP da 2GB GB/sec a 4GB GB/sec e IOPS a 160000 TB e la capacità 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 sintassi dettagliata della riga di comando per FSX "update-file-system" è disponibile qui:
https://docs.aws.amazon.com/cli/latest/reference/fsx/update-file-system.html -
I volumi FSX ONTAP vengono montati con nconnect e copie predefinite nei broker Kafka
L'immagine seguente mostra l'architettura finale di un cluster Kafka basato su FSX ONTAP:
-
Calcolo. Abbiamo utilizzato un cluster Kafka a tre nodi con un gruppo di zookeeper a tre nodi in esecuzione su server dedicati. Ogni broker disponeva di sei punti di montaggio NFS in sei volumi sull'istanza di FSX ONTAP.
-
Monitoraggio. Abbiamo utilizzato due nodi per una combinazione Prometheus-Grafana. Per la generazione dei carichi di lavoro, abbiamo utilizzato un cluster a tre nodi separato in grado di produrre e utilizzare questo cluster Kafka.
-
Storage. Abbiamo utilizzato un ONTAP FSX con sei volumi 2TB montati. Il volume è stato quindi esportato nel broker Kafka con un mount NFS.i volumi FSX ONTAP sono montati con 16 sessioni nconnect e opzioni predefinite nei broker Kafka.
-
Configurazioni di benchmarking di OpenMessage.
Abbiamo utilizzato la stessa configurazione utilizzata per NetApp Cloud Volumes ONTAP e i relativi dettagli sono qui -
link:kafka-nfs-performance-overview-and-validation-in-aws.html#architecture-setup
Metodologia di test
-
È stato eseguito il provisioning di un cluster Kafka in base alle specifiche descritte in precedenza utilizzando Terraform e ansible. Il terraform viene utilizzato per costruire l'infrastruttura utilizzando istanze AWS per il cluster Kafka e ansible crea il cluster Kafka su di essi.
-
È stato attivato un carico di lavoro OMB con la configurazione del carico di lavoro descritta sopra e il driver Sync.
sudo bin/benchmark –drivers driver-kafka/kafka-sync.yaml workloads/1-topic-100-partitions-1kb.yaml
-
È stato attivato un altro carico di lavoro con il driver di throughput con la stessa configurazione del carico di lavoro.
sudo bin/benchmark –drivers driver-kafka/kafka-throughput.yaml workloads/1-topic-100-partitions-1kb.yaml
Osservazione
Sono stati utilizzati due diversi tipi di driver per generare carichi di lavoro per confrontare le performance di un'istanza di Kafka in esecuzione su NFS. La differenza tra i driver è la proprietà di scaricamento dei log.
Per un fattore di replica Kafka 1 e FSX ONTAP:
-
Throughput totale generato in modo coerente dal driver Sync: ~ 3218 Mbps e performance di picco in ~ 3652 Mbps.
-
Throughput totale generato in modo coerente dal driver di throughput: ~ 3679 Mbps e performance di picco in ~ 3908 Mbps.
Per Kafka con fattore di replica 3 e FSX ONTAP :
-
Throughput totale generato in modo coerente dal driver Sync: ~ 1252 Mbps e performance di picco in ~ 1382 Mbps.
-
Throughput totale generato in modo coerente dal driver di throughput: ~ 1218 Mbps e performance di picco in ~ 1328 Mbps.
Nel fattore di replica Kafka 3, l'operazione di lettura e scrittura è avvenuta tre volte su FSX ONTAP, nel fattore di replica Kafka 1, l'operazione di lettura e scrittura è una volta su FSX ONTAP, quindi in entrambe le convalida, siamo in grado di raggiungere il throughput massimo di 4GB/sec.
Il driver Sync è in grado di generare un throughput coerente quando i log vengono trasferiti istantaneamente sul disco, mentre il driver di throughput genera burst di throughput quando i log vengono impegnati su disco in massa.
Questi numeri di throughput vengono generati per la configurazione AWS specificata. Per requisiti di performance più elevati, i tipi di istanze possono essere scalati e ottimizzati ulteriormente per ottenere numeri di throughput migliori. Il throughput totale o il tasso totale è la combinazione di un tasso di produttore e di consumo.
Il grafico seguente mostra il ONTAP FSX a 2GB GB/sec e le prestazioni a 4GB GB/sec per il fattore di replica Kafka 3. Il fattore di replica 3 esegue le operazioni di lettura e scrittura tre volte sullo storage FSX ONTAP. La velocità totale per il driver di throughput è di 881 MB/sec, che legge e scrive il funzionamento di Kafka di circa 2,64 GB/sec sul file system FSX ONTAP di 2GB GB/sec e la velocità totale per il driver di throughput è di 1328 MB/sec che legge e scrive il funzionamento di kafka di circa 3,98 GB/sec. Inoltre, le performance di Kafka sono lineari e scalabili in base alla velocità di throughput di FSX ONTAP.
Il grafico seguente mostra le prestazioni tra EC2 istanza e FSX ONTAP (fattore di replica Kafka: 3)