Skip to main content
NetApp Solutions
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Performance-Übersicht und Validierung in AWS FSX for NetApp ONTAP

Beitragende

Ein Kafka-Cluster, bei dem die Storage-Ebene auf NetApp NFS gemountet ist, wurde in AWS FSX for NetApp ONTAP in Bezug auf die Performance gemessen. Die Benchmarking-Beispiele sind in den folgenden Abschnitten beschrieben.

Apache Kafka in AWS FSX for NetApp 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 for NetApp ONTAP-Version, ONTAP 9.12.1, unterstützt werden.

Amazon FSX für NetApp ONTAP bietet ein vollständig gemanagtes, skalierbares und hochleistungsfähiges NFS-Dateisystem in der Cloud. Kafka-Daten auf FSX für NetApp 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.

Durch diese Verbesserungen können AWS-Kunden die Vorteile von FSX for NetApp ONTAP nutzen, wenn sie Kafka-Workloads auf AWS-Computing-Services ausführen. Diese Vorteile sind:
* Verringerung der CPU-Auslastung zur Verringerung 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 for NetApp 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 for NetApp ONTAP

Ein Kafka-Cluster mit AWS FSX for NetApp 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 für NetApp ONTAP gezeigt.

Plattformkomponente Umgebungskonfiguration

Kafka 3.2.3

  • 3 x Zookeeper – t2.small

  • 3 x Broker Server – i3en.2xlarge

  • 1 x Grafana – c5n.2xlarge

  • 4 x Hersteller/Verbraucher — c5n.2xlarge *

Betriebssystem auf allen Knoten

RHEL8.6

AWS FSX für NetApp ONTAP

Multi-AZ mit 4 GB/s Durchsatz und 160000 IOPS

Einrichtung von NetApp FSX für NetApp ONTAP

  1. Für unsere ersten Tests haben wir ein FSX für NetApp 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 for NetApp ONTAP über die AWS CLI. Sie müssen den Befehl in Ihrer Umgebung je nach Bedarf weiter anpassen. FSX for NetApp ONTAP kann zusätzlich über die AWS-Konsole implementiert und verwaltet werden. Dies erleichtert und optimiert die Implementierung mit weniger Befehlszeileneingaben.

    Dokumentation in FSX für NetApp ONTAP beträgt die für ein 2-GB/s-Durchsatzdateisystem in unserer Testregion (US-East-1) erreichbare maximale IOPS 80,000 iops. Der maximale IOPS-Wert für ein FSX für NetApp ONTAP-Dateisystem beträgt insgesamt 160,000 iops, wofür eine 4-GB/s-Durchsatzbereitstellung erforderlich ist, die wir später in diesem Dokument demonstrieren werden.

    Weitere Informationen zu FSX for NetApp ONTAP-Performance-Spezifikationen finden Sie in der Dokumentation zu AWS FSX for NetApp ONTAP 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.

  2. Warten Sie beim Erstellen des FSX für NetApp 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
  3. Validieren Sie die Zugangsdaten, indem Sie sich bei FSX for NetApp ONTAP SSH mit dem Benutzer fsxadmin anmelden:
    Fsxadmin ist das Standard-Administratorkonto für FSX für NetApp 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.
  4. Sobald Ihre Zugangsdaten validiert sind, erstellen Sie die Storage Virtual Machine im FSX for NetApp 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 für NetApp ONTAP Volumes und FSX für NetApp ONTAP-Mandantenfähigkeit.

  5. Sobald Sie Ihre primäre Storage Virtual Machine konfiguriert haben, SSH in das neu erstellte FSX for NetApp ONTAP Dateisystem und erstellen Volumes in Storage Virtual Machine mit nachstehendem 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
  6. 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 für NetApp 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.

  7. Anschließend erweitern wir die FSX for NetApp ONTAP-Durchsatzkapazität von 2 GB/s auf 4 GB/s und IOPS auf 160000 und die Kapazität auf 5 TB, um zusätzliche Performance und Kapazität zu erhalten

    [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

  8. Die FSX für NetApp ONTAP-Volumes sind mit nconnect und Standardopionen in Kafka-Brokern gemountet

    Das folgende Bild zeigt unsere letzte Architektur unseres FSX für NetApp ONTAP-basierten Kafka-Clusters:

    Dieses Bild zeigt die Architektur eines FSxN-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 für NetApp 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 für NetApp ONTAP, in dem sechs 2-TB-Volumes gemountet sind. Das Volume wurde dann mit einem NFS-Mount in den Kafka-Broker exportiert.die FSX für NetApp ONTAP-Volumes sind 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 -
https://docs.netapp.com/us-en/netapp-solutions/data-analytics/kafka-nfs-performance-overview-and-validation-in-aws.html#architectural-setup

Methodik des Testens

  1. 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.

  2. 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
  3. 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 den FSX für NetApp 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 dem FSX für NetApp 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 in FSX für NetApp ONTAP statt, in Kafka-Replizierungsfaktor 1 ist der Lese- und Schreibvorgang einmalig in FSX für NetApp ONTAP, so dass in beiden Validierungen, Wir konnten den maximalen Durchsatz von 4 GB/s erreichen.

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.

Dieses Bild zeigt die Performance von kafka mit RF1 und RF3

Das folgende Diagramm zeigt den 2-GB/s-FSX für NetApp ONTAP und 4-GB/s-Performance für Kafka-Replizierungsfaktor 3. Der Replizierungsfaktor 3 führt den Lese- und Schreibvorgang dreimal auf dem FSX für NetApp ONTAP-Storage durch. Die Gesamtrate für den Durchsatztreiber beträgt 881 MB/sec, was den Kafka-Betrieb ungefähr 2.64 GB/sec auf dem 2GB/sec FSX für NetApp ONTAP-Dateisystem liest und schreibt. Die Gesamtrate für den Durchsatztreiber beträgt 1328 MB/sec, was den kafka-Betrieb ungefähr 3.98 GB/sec liest und schreibt. Unsere Kafka-Performance ist linear und skalierbar basierend auf dem FSX for NetApp ONTAP Throughput.

Dieses Bild zeigt die Scale-out-Leistung von 2 GB/s und 4 GB/s.

Das folgende Diagramm zeigt die Performance zwischen EC2-Instanz und FSX für NetApp ONTAP (Kafka-Replizierungsfaktor: 3)

Dieses Bild zeigt den Leistungsvergleich zwischen EC2 und FSxN in RF3.