Performance-Übersicht und Validierung in AWS FSX ONTAP
Ein Kafka-Cluster mit einer Storage-Ebene, die auf NetApp NFS gemountet ist, wurde in den AWS FSX ONTAP hinsichtlich der Performance gemessen. Die Benchmarking-Beispiele sind in den folgenden Abschnitten beschrieben.
Apache Kafka in AWS FSX ONTAP
Network File System (NFS) ist ein weit verbreitetes Netzwerkdateisystem zur Speicherung großer Datenmengen. In den meisten Unternehmen werden Daten zunehmend durch Streaming-Applikationen wie Apache Kafka generiert. Für diese Workloads sind Skalierbarkeit, niedrige Latenz und eine robuste Datenaufnahmearchitektur mit modernen Storage-Funktionen erforderlich. Für Echtzeitanalysen und zur Bereitstellung verwertbarer Erkenntnisse ist eine gut konzipierte und äußerst leistungsfähige Infrastruktur erforderlich.
Kafka funktioniert nach dem Design mit POSIX-konformem Filesystem und verarbeitet Dateivorgänge mithilfe des Filesystems. Beim Speichern von Daten auf einem NFSv3-Filesystem kann der Kafka-Broker NFS-Client Dateivorgänge jedoch anders als ein lokales Dateisystem wie XFS oder Ext4 interpretieren. Ein häufiges Beispiel ist die dumme NFS-Umbenennung, die Kafka-Broker fehlschlagen ließ, wenn sie Cluster erweitern und Partitionen neu zuordnen. Um dieser Herausforderung zu begegnen, hat NetApp den Open-Source-Linux-NFS-Client mit Änderungen aktualisiert, die nun allgemein in RHEL8.7, RHEL9.1 verfügbar sind und von der aktuellen FSX ONTAP-Version, ONTAP 9.12.1, unterstützt werden.
Amazon FSX ONTAP bietet ein vollständig gemanagtes, skalierbares und hochleistungsfähiges NFS-Dateisystem in der Cloud. Kafka-Daten auf FSX ONTAP können für die Verarbeitung großer Datenmengen skaliert werden und Fehlertoleranz gewährleisten. NFS bietet zentralisiertes Storage-Management und Datensicherung für kritische und sensible Datensätze.
Diese Verbesserungen ermöglichen es AWS-Kunden, FSX ONTAP beim Ausführen von Kafka-Workloads in AWS-Computing-Services zu nutzen. Diese Vorteile sind: * Reduzierung der CPU-Auslastung zur Reduzierung der I/O-Wartezeit * schnellere Recovery-Zeit für Kafka-Broker. * Zuverlässigkeit und Effizienz. * Skalierbarkeit und Performance. * Multi-Availability Zone Verfügbarkeit. * Datenschutz.
Performance-Übersicht und Validierung in AWS FSX ONTAP
Ein Kafka-Cluster mit einer auf NetApp NFS gemounteten Storage-Ebene wurde in der AWS Cloud hinsichtlich Performance getestet. Die Benchmarking-Beispiele sind in den folgenden Abschnitten beschrieben.
Kafka in AWS FSX ONTAP
Ein Kafka-Cluster mit AWS FSX ONTAP wurde hinsichtlich der Performance in der AWS-Cloud gemessen. Dieses Benchmarking wird in den folgenden Abschnitten beschrieben.
Einrichtung der Architektur
In der folgenden Tabelle wird die Umgebungskonfiguration für ein Kafka-Cluster mithilfe von AWS FSX ONTAP gezeigt.
Plattformkomponente | Umgebungskonfiguration |
---|---|
Kafka 3.2.3 |
|
Betriebssystem auf allen Knoten |
RHEL8.6 |
AWS FSX ONTAP |
Multi-AZ mit 4 GB/s Durchsatz und 160000 IOPS |
Einrichtung von NetApp FSX ONTAP
-
Für unsere ersten Tests haben wir ein FSX ONTAP-Dateisystem mit 2 TB Kapazität und 40000 IOPS für 2 GB/s Durchsatz erstellt.
[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"}
In unserem Beispiel implementieren wir FSX ONTAP über die AWS CLI. Sie müssen den Befehl in Ihrer Umgebung je nach Bedarf weiter anpassen. FSX ONTAP kann zusätzlich über die AWS-Konsole implementiert und verwaltet werden. Dies erleichtert und optimiert die Implementierung mit weniger Befehlszeileneingaben.
Dokumentation in FSX ONTAP beträgt die maximal erreichbare IOPS für ein Dateisystem mit 2 GB/s Durchsatz in unserer Testregion (US-East-1) 80,000 iops. Der maximale iops-wert für ein FSX ONTAP-Dateisystem beträgt insgesamt 160,000 iops, was eine 4-GB/s-Durchsatzbereitstellung erfordert, die wir später in diesem Dokument demonstrieren werden.
Für weitere Informationen über FSX ONTAP-Leistungsspezifikationen, besuchen Sie bitte die AWS FSX ONTAP Dokumentation hier: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html .
Detaillierte Kommandozeilen-Syntax für FSX „create-file-System“ finden Sie hier: https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html
Sie können beispielsweise einen bestimmten KMS-Schlüssel anstelle des standardmäßigen AWS FSX-Master-Schlüssels angeben, der verwendet wird, wenn kein KMS-Schlüssel angegeben wird.
-
Warten Sie beim Erstellen des FSX ONTAP-Dateisystems, bis sich der „Lebenszyklus“-Status in Ihrer JSON-Rückkehr in „VERFÜGBAR“ ändert, nachdem Sie Ihr Dateisystem wie folgt beschrieben haben:
[root@ip-172-31-33-69 ~]# aws fsx describe-file-systems --region us-east-1 --file-system-ids fs-02ff04bab5ce01c7c
-
Validieren Sie die Anmeldeinformationen durch Anmeldung in FSX ONTAP SSH mit dem Benutzer fsxadmin: Fsxadmin ist das Standard-Administratorkonto für FSX ONTAP Dateisysteme bei der Erstellung. Das Passwort für fsxadmin ist das Passwort, das beim ersten Erstellen des Dateisystems entweder in der AWS-Konsole oder mit der AWS-CLI konfiguriert wurde, wie in Schritt 1 angegeben.
[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.
-
Nachdem Ihre Anmeldeinformationen validiert wurden, erstellen Sie die virtuelle Speichermaschine im FSX ONTAP-Dateisystem
[root@ip-172-31-33-69 ~]# aws fsx --region us-east-1 create-storage-virtual-machine --name svmkafkatest --file-system-id fs-02ff04bab5ce01c7c
Eine Storage Virtual Machine (SVM) ist ein isolierter File-Server mit eigenen administrativen Anmeldeinformationen und Endpunkten für die Administration und den Zugriff auf Daten in FSX ONTAP Volumes und bietet die Mandantenfähigkeit von FSX ONTAP.
-
Sobald Sie Ihre primäre virtuelle Speichermaschine konfiguriert haben, SSH in das neu erstellte FSX ONTAP Dateisystem und erstellen Volumes in Speicher virtuelle Maschine mit unten Beispielbefehl und ähnlich erstellen wir 6 Volumen für diese Validierung. Behalten Sie ausgehend von unserer Validierung die Standardkomponente (8) oder weniger Komponenten bei, was kafka eine bessere Performance bietet.
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
-
Für unsere Tests werden wir zusätzliche Kapazität in unseren Volumes benötigen. Erweitern Sie das Volume auf 2 TB und mounten Sie es über den Verbindungspfad.
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 können Volumes über Thin Provisioning bereitgestellt werden. In unserem Beispiel übersteigt die gesamte erweiterte Volume-Kapazität die gesamte Dateisystemkapazität, sodass wir die gesamte Dateisystemkapazität erweitern müssen, um zusätzliche bereitgestellte Volume-Kapazität freizuschalten, die wir im nächsten Schritt demonstrieren werden.
-
Für zusätzliche Leistung und Kapazität erweitern wir die FSX ONTAP-Durchsatzkapazität von 2 GB/s auf 4 GB/s und IOPS auf 160000 und die Kapazität auf 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
Detaillierte Kommandozeilen-Syntax für FSX „Update-file-System“ finden Sie hier:
https://docs.aws.amazon.com/cli/latest/reference/fsx/update-file-system.html -
Die FSX ONTAP-Volumes werden mit nconnect und Standardopionen in Kafka-Brokern gemountet
Das folgende Bild zeigt unsere letzte Architektur unseres FSX ONTAP-basierten Kafka-Clusters:
-
Computing: Wir nutzten einen drei-Knoten-Kafka-Cluster mit einem drei-Knoten-Zookeeper-Ensemble, das auf dedizierten Servern lief. Jeder Broker hatte sechs NFS-Mount-Punkte auf sechs Volumes auf der FSX ONTAP-Instanz.
-
Monitoring: Wir haben zwei Knoten für eine Prometheus-Grafana Kombination verwendet. Zur Generierung von Workloads haben wir ein separates Cluster mit drei Nodes verwendet, das für diesen Kafka-Cluster erzeugt und genutzt werden kann.
-
Storage: Wir verwendeten ein FSX ONTAP mit sechs angehängten 2-TB-Volumes. Das Volume wurde dann mit einem NFS-Mount in den Kafka-Broker exportiert.die FSX ONTAP-Volumes werden mit 16 nconnect-Sessions und Standardoptionen in Kafka-Broker gemountet.
-
OpenMessage Benchmarking-Konfigurationen.
Wir haben dieselbe Konfiguration verwendet wie für das NetApp Cloud Volumes ONTAP und ihre Details sind hier -
Link:kafka-nfs-Performance-overview-and-validation-in-aws.HTML#architektureinrichtung
Methodik des Testens
-
Ein Kafka-Cluster wurde gemäß der oben beschriebenen Spezifikation mit Terraform und ansible bereitgestellt. Terraform wird verwendet, um die Infrastruktur mit AWS-Instanzen für den Kafka-Cluster zu erstellen, und ansible baut auf diesen den Kafka-Cluster.
-
Ein OMB-Workload wurde mit der oben beschriebenen Workload-Konfiguration und dem Sync-Treiber ausgelöst.
sudo bin/benchmark –drivers driver-kafka/kafka-sync.yaml workloads/1-topic-100-partitions-1kb.yaml
-
Ein anderer Workload wurde mit dem Durchsatztreiber mit derselben Workload-Konfiguration ausgelöst.
sudo bin/benchmark –drivers driver-kafka/kafka-throughput.yaml workloads/1-topic-100-partitions-1kb.yaml
Beobachtung
Es wurden zwei unterschiedliche Treibertypen verwendet, mit denen Workloads für die Performance einer Kafka-Instanz generiert werden, die auf NFS ausgeführt wird. Der Unterschied zwischen den Treibern ist die Eigenschaft log flush.
Für einen Kafka-Replizierungsfaktor 1 und die FSX-ONTAP:
-
Gesamtdurchsatz, der konsistent vom Sync-Treiber generiert wird: ~ 3218 Mbit/s und Spitzenleistung in ~ 3652 Mbit/s.
-
Gesamtdurchsatz, der konsistent vom Durchsatztreiber generiert wird: ~ 3679 Mbit/s und Spitzenleistung in ~ 3908 Mbit/s.
Für Kafka mit Replikationsfaktor 3 und FSX ONTAP:
-
Gesamtdurchsatz, der konsistent vom Sync-Treiber generiert wird: ~ 1252 Mbit/s und Spitzenleistung in ~ 1382 Mbit/s.
-
Gesamtdurchsatz, der konsistent vom Durchsatztreiber generiert wird: ~ 1218 Mbit/s und Spitzenleistung in ~ 1328 Mbit/s.
In Kafka-Replizierungsfaktor 3 fand der Lese- und Schreibvorgang dreimal auf dem FSX ONTAP statt, in Kafka-Replizierungsfaktor 1 ist der Lese- und Schreibvorgang einmalig auf dem FSX ONTAP, sodass wir bei beiden Validierungen den maximalen Durchsatz von 4 GB/s erreichen konnten.
Der Sync-Treiber kann einen konsistenten Durchsatz generieren, da die Protokolle umgehend auf die Festplatte gespeichert werden, während der Durchsatztreiber bei der umfangreichen Protokollüberweise auf die Festplatte führt.
Diese Durchsatzwerte werden für die jeweilige AWS-Konfiguration generiert. Um höhere Performance-Anforderungen zu erfüllen, können die Instanztypen vertikal skaliert und weiter optimiert werden, um einen besseren Durchsatz zu erzielen. Der Gesamtdurchsatz oder die Gesamtrate ist die Kombination von Erzeugerrate und Verbraucherrate.
Das folgende Diagramm zeigt die 2-GB/s-FSX-ONTAP und 4-GB/s-Leistung für den Kafka-Replizierungsfaktor 3. Der Replikationsfaktor 3 führt den Lese- und Schreibvorgang dreimal auf dem FSX ONTAP-Speicher durch. Die Gesamtrate für den Durchsatztreiber beträgt 881 MB/Sek., was den Kafka-Betrieb ungefähr 2.64 GB/Sek. auf dem FSX ONTAP-Dateisystem mit 2 GB/Sek. liest und schreibt, und die Gesamtrate für den Durchsatztreiber beträgt 1328 MB/Sek., der den kafka-Betrieb ungefähr 3.98 GB/Sek. liest und schreibt. Unsere Kafka-Performance ist linear und skalierbar basierend auf dem FSX ONTAP-Durchsatz.
Das folgende Diagramm zeigt die Performance zwischen EC2-Instanz und FSX ONTAP (Kafka-Replizierungsfaktor: 3)