Russischer verteilter Speicher. Wie es funktioniert



In diesem Frühjahr hat das Reydiks-Team die erste Version der Software für die Erstellung verteilter Blockspeichersysteme vorbereitet und veröffentlicht, die auf Elbrus-4.4-Serverplattformen auf Basis von Elbrus-4C-Mikroprozessoren ausgeführt werden.

Die Nützlichkeit einer solchen Symbiose ist mit bloßem Auge sichtbar - die Montage von Speichersystemen auf der Basis von inländischem Eisen und dem inländischen Betriebssystem wird zu einem attraktiven Produkt des heimischen Marktes, insbesondere für Kunden mit Schwerpunkt auf Importsubstitution.

Das Potenzial des entwickelten Betriebssystems ist jedoch nicht auf russische Serverplattformen beschränkt. Derzeit wird die Kompatibilität mit Standard-x86-64-Servern getestet, die auf dem Markt weit verbreitet sind. Darüber hinaus ist das Produkt mit der gewünschten Funktionalität "fertig", was seine Implementierung außerhalb des russischen Marktes ermöglicht.

Im Folgenden wird eine kleine Diskussion über die Anordnung der Softwarelösung (RAIDIX RAIN) vorgestellt, mit der lokale Servermedien zu einem einzigen fehlertoleranten Speichercluster mit zentraler Verwaltung sowie horizontalen und vertikalen Skalierungsfunktionen kombiniert werden können.

Verteilte Speicherfunktionen


Herkömmliche Speichersysteme, die in Form eines einzelnen Hardware- und Softwarekomplexes hergestellt werden, haben ein häufiges Problem im Zusammenhang mit der Skalierung: Die Systemleistung beruht auf Controllern, ihre Anzahl ist begrenzt, die Kapazitätserweiterung durch Hinzufügen von Erweiterungsregalen mit Netzbetreibern erhöht die Produktivität nicht.

Mit diesem Ansatz wird die Gesamtleistung des Speichersystems sinken, da mit zunehmender Kapazität die vorherige Anzahl von Controllern mehr Zugriffsvorgänge auf das erhöhte Datenvolumen verarbeiten muss.

RAIDIX RAIN unterstützt die horizontale Blockskalierung. Im Gegensatz zu herkömmlichen Lösungen führt das Erhöhen der Knoten (Serverblöcke) des Systems zu einer linearen Erhöhung nicht nur der Kapazität, sondern auch der Systemleistung. Dies ist möglich, da jeder RAIDIX RAIN-Knoten nicht nur Medien, sondern auch Rechenressourcen für E / A und Datenverarbeitung enthält.

Anwendungsszenarien


RAIDIX RAIN umfasst die Implementierung aller Hauptanwendungsszenarien für verteilten Blockspeicher: Cloud-Speicherinfrastruktur, hoch ausgelastete Datenbanken und Big Data-Analysespeicher. RAIDIX RAIN kann auch mit herkömmlichen Speichersystemen mit ausreichend hohem Datenvolumen und entsprechenden finanziellen Möglichkeiten des Kunden konkurrieren.

Öffentliche und private Clouds


Die Lösung bietet die flexible Skalierbarkeit, die für die Bereitstellung einer Cloud-Infrastruktur erforderlich ist: Leistung, Durchsatz und Speicherkapazität erhöhen sich mit jedem dem System hinzugefügten Knoten.

Datenbanken


Der RAIDIX RAIN-Cluster in einer All-Flash-Konfiguration ist eine effiziente Lösung für die Wartung hoch geladener Datenbanken. Die Lösung wird eine kostengünstige Alternative zu Oracle Exadata-Produkten für Oracle RAC sein.

Big Data Analytics


Zusammen mit zusätzlicher Software ist es möglich, eine Lösung zur Durchführung von Big-Data-Analysen zu verwenden. RAIDIX RAIN bietet im Vergleich zu einem HDFS-Cluster eine deutlich höhere Leistung und Wartungsfreundlichkeit.

Lösungsarchitektur


RAIDIX RAIN unterstützt zwei Bereitstellungsoptionen: dediziert (extern oder konvergent) und hyperkonvergiert (HCI, hyperkonvergierte Infrastruktur).

Spezielle Bereitstellungsoption


In der ausgewählten Version ist der RAIDIX RAIN-Cluster ein klassischer Softwarespeicher. Die Lösung wird auf der erforderlichen Anzahl dedizierter Serverknoten bereitgestellt (mindestens 3, die Anzahl ist von oben praktisch unbegrenzt), deren Ressourcen vollständig für Speicheraufgaben verwendet werden.

Abb. 1. Spezielle Bereitstellungsoption

Die RAIDIX RAIN-Software wird direkt auf Bare Metal installiert. Anwendungen, Dienste und Computerressourcen, die RAIN zum Speichern von Informationen verwenden, werden auf externen Hosts gehostet und über ein Speichernetzwerk (klassische Rechenzentrumsarchitektur) mit diesem verbunden.

Hyperkonvergierte Bereitstellungsoption


Die hyperkonvergente Option umfasst die gemeinsame Platzierung von Rechenleistung (Hypervisor und Produktions-VMs) und Speicherressourcen (Softwarespeicher) des Rechenzentrums auf einem Knotensatz. Dies gilt hauptsächlich für virtuelle Infrastrukturen. Bei diesem Ansatz wird die RAIN-Software auf jedem Host (Knoten) der Infrastruktur (HCI) in Form einer virtuellen Maschine installiert.

Abb. 2. Hyperkonvergierte Bereitstellungsoption

Die Interaktion der RAIN-Clusterknoten untereinander und mit den Endbenutzern von Speicherressourcen (Server, Anwendungen) erfolgt über die Protokolle iSCSI (IP, IPoIB), iSER (RoCE, RDMA) oder NVMeOF.

Die hyperkonvergente Bereitstellungsoption bietet die folgenden Vorteile:

  • Konsolidierung von Computer- und Speicherressourcen (keine Notwendigkeit, einen dedizierten externen Speicher zu implementieren und zu warten).
  • Gemeinsame horizontale Blockskalierung von Computer- und Speicherressourcen.
  • Einfache Implementierung und Wartung.
  • Zentrales Management.
  • Sparen Sie Rack-Kapazität und Stromverbrauch.

In Bezug auf die verwendeten Medien unterstützt RAIDIX RAIN drei Konfigurationen:

  • All-Flash - Clusterknoten werden nur mit Flash-Medien (NVMe, SSD) geliefert.
  • HDD - Clusterknoten werden nur mit HDD-Trägern geliefert.
  • Hybrid - zwei unabhängige Speicherebenen auf Festplatte und SSD.


Produktive Ausfallsicherheit


Der Kernwert von RAIDIX RAIN ist das optimale Gleichgewicht zwischen Leistung, Fehlertoleranz und effizienter Nutzung der Speicherkapazität.

Als Teil der Client-IT-Infrastruktur ist RAIDIX RAIN auch insofern attraktiv, als wir am Ausgang einen „ehrlichen“ Blockzugriff haben, der die Lösung von den meisten Marktanaloga unterscheidet.

Derzeit weisen die meisten Konkurrenzprodukte nur bei Verwendung der Spiegelung eine hohe Leistung auf. Gleichzeitig wird die nützliche Speicherkapazität um das Zweifache oder mehr reduziert: Einzelne Datenreplikation (Spiegelung) - 50% Redundanz, doppelte Datenreplikation (doppelte Spiegelung) - 66,6% Redundanz.

Die Verwendung von Speicheroptimierungstechnologien wie EC (Erasure Coding - Noiseless Coding), Deduplizierung und Komprimierung in verteilten Speichersystemen führt zu einer erheblichen Verschlechterung der Speicherleistung, was für verzögerungsempfindliche Anwendungen nicht akzeptabel ist.

In der Praxis sind solche Lösungen daher normalerweise gezwungen, ohne den Einsatz dieser Technologien zu arbeiten oder sie nur für „kalte“ Daten einzuschließen.

Failover-Anforderungen


Ursprünglich wurde RAIDIX RAIN mit einer Reihe klarer Anfangsanforderungen für die Ausfallsicherheit und Verfügbarkeit des Systems entwickelt:

  • Der Cluster muss einen Ausfall von mindestens zwei Knoten überleben, wobei die Anzahl der Knoten streng größer als 4 ist. Für drei und vier ist ein Ausfall eines Knotens garantiert.
  • Ein Knoten muss einen Ausfall von mindestens zwei Festplatten in jedem Knoten überleben, wenn sich mindestens 5 Festplatten in einem Knoten befinden.
  • Der Redundanzgrad von Laufwerken in einem typischen Cluster (von 16 Knoten) sollte 30% nicht überschreiten
  • Die Datenverfügbarkeit muss mindestens 99,999% betragen

Dies hat die bestehende Produktarchitektur stark beeinflusst.

Löschcodierungsfunktionen im verteilten Speicher


Der primäre RAIDIX RAIN-Fehlertoleranzansatz ist die Verwendung einzigartiger Erasure Coding-Technologien. EC-Unternehmen, die für ihr Flaggschiffprodukt bekannt sind, werden auch im verteilten Speicher eingesetzt, was eine Leistung ermöglicht, die mit gespiegelten Konfigurationen vergleichbar ist. Dies gilt sowohl für zufällige als auch für sequentielle Lasten. Gleichzeitig wird ein vorbestimmtes Maß an Fehlertoleranz sichergestellt und die Nutzkapazität erheblich erhöht, und die Gemeinkosten machen nicht mehr als 30% der Rohspeicherkapazität aus.

Hochleistungs-EC-RAIDIX ist bei sequentiellen Vorgängen, insbesondere bei Verwendung von SATA-Festplatten mit großer Kapazität, gesondert zu erwähnen.

Im Allgemeinen bietet RAIDIX RAIN drei fehlerkorrigierende Codierungsoptionen:

  • Für 3 Knoten ist die Verwendung von RAID 1 optimal.
  • für 4 Knoten optimale Nutzung von RAID 5;
  • Für einen Speichersubcluster von 5 bis 20 Knoten besteht der optimale Ansatz darin, Netzwerk-RAID 6 zu verwenden.


Abb. 3. Optionen zur fehlerkorrigierenden Codierung

Alle Optionen setzen eine gleichmäßige Verteilung der Daten auf alle Knoten des Clusters voraus, wobei Redundanz in Form von Prüfsummen (oder Korrekturcodes) hinzugefügt wird. Dies ermöglicht es uns, Parallelen zu den Reed-Solomon-Codes zu ziehen, die in Standard-RAID-Arrays (RAID-6) verwendet werden, und ein Failover von bis zu 2 Trägern zu ermöglichen. Netzwerk-RAID-6 funktioniert ähnlich wie ein festplattenbasiertes RAID-6, verteilt jedoch Daten auf die Knoten des Clusters und ermöglicht ein Failover von 2 Knoten.

Wenn in RAID 6 1-2 Netzbetreiber innerhalb eines Knotens ausfallen, werden sie lokal ohne Verwendung verteilter Prüfsummen wiederhergestellt, wodurch die wiederhergestellte Datenmenge, die Netzwerklast und die allgemeine Systemverschlechterung minimiert werden.

Fehlerdomänen


RAIN unterstützt das Konzept von Fehlerdomänen oder Verfügbarkeitsdomänen. Auf diese Weise können Sie den Ausfall nicht nur einzelner Knoten, sondern auch ganzer Server-Racks oder -Körbe ermitteln, deren Knoten logisch in Fehlerdomänen gruppiert sind. Diese Möglichkeit wird durch die Verteilung von Daten erreicht, um deren Fehlertoleranz nicht auf der Ebene einzelner Knoten, sondern auf Domänenebene sicherzustellen, wodurch der Ausfall aller darin gruppierten Knoten (z. B. eines gesamten Server-Racks) überlebt werden kann. Bei diesem Ansatz wird der Cluster in unabhängige Untergruppen (Subcluster) unterteilt. Die Anzahl der Knoten in einer Untergruppe beträgt nicht mehr als 20, was die Voraussetzung für Fehlertoleranz und Verfügbarkeit darstellt. Darüber hinaus ist die Anzahl der Untergruppen nicht begrenzt.

Abb. 4. Fehlerdomänen

Der Ausfall von Fehlern (Festplatten, Knoten oder Netzwerk) wird automatisch ausgeführt, ohne das System anzuhalten.

Darüber hinaus sind alle RAIDIX RAIN-Clustergeräte durch Anschließen an unterbrechungsfreie Stromversorgungen (USV) vor Stromausfall geschützt. Geräte, die an dieselbe USV angeschlossen sind, werden als Stromausfallgruppe bezeichnet.

Merkmale und Funktionalität


Berücksichtigen Sie die wichtigsten Funktionsmerkmale von RAIDIX RAIN.
Tabelle 1. Grundlegende RAIDIX RAIN-Funktionen
BetriebsmerkmaleWert
Unterstützte KnotentypenInländische Serverplattformen basierend auf Elbrus-4C-Prozessoren
Standard x86-64 Server (Perspektive)
Unterstützte MedientypenSATA- und SAS-Festplatte, SATA- und SAS-SSD, NVMe
Maximale Speicherkapazität16 EB
Maximale Clustergröße1.024 Knoten
GrundfunktionalitätHot Volume Expansion
Hot-Hinzufügen von Knoten zum Cluster
Cluster-Neuausrichtung
Failover ohne Ausfallzeit
Resiliency TechnologiesAusfall von Knoten, Medien, Netzwerk.
Löschcodierung, verteilt auf die Clusterknoten: Netzwerk-RAID 0/1/5/6.
Korrekturcodes auf der Ebene lokaler Host-Carrier (lokales RAID 6)
Fehlerdomänen

Als wichtiges Funktionsmerkmal von RAIDIX RAIN ist zu beachten, dass Dienste wie Initialisierung, Rekonstruktion und Neuverteilung (Skalierung) im Hintergrund stehen und auf einen Prioritätsparameter gesetzt werden können .

Mit der Prioritätseinstellung kann der Benutzer die Last im System unabhängig anpassen und so die Arbeit dieser Dienste beschleunigen oder verlangsamen. Zum Beispiel bedeutet Priorität 0, dass Dienste nur funktionieren, wenn keine Last von Clientanwendungen geladen wird.

Skalierungsoptionen


Das Erweitern eines RAIDIX RAIN-Clusters ist so einfach und automatisiert wie möglich. Das System verteilt Daten im Hintergrund unabhängig unter Berücksichtigung der Kapazität neuer Knoten neu, die Last wird ausgeglichen und gleichmäßig, die Gesamtleistung und die Speicherkapazität werden proportional erhöht. Der Prozess der horizontalen Skalierung verläuft ohne Ausfallzeiten „heiß“ und erfordert kein Stoppen von Anwendungen und Diensten.

Abb. 5. Schema des Skalierungsprozesses

Flexibilität der Architektur


RAIDIX RAIN ist ein Softwareprodukt und nicht auf eine bestimmte Hardwareplattform beschränkt. Das Konzept legt nahe, dass die Installation auf jeder kompatiblen Serverhardware möglich ist.

Basierend auf den Besonderheiten seiner Infrastruktur und Anwendungen wählt jeder Kunde die beste Bereitstellungsoption: dediziert oder hyperkonvergiert.

Durch die Unterstützung verschiedener Medientypen können Sie basierend auf RAIDIX RAIN basierend auf dem Budget und den zu lösenden Aufgaben erstellen:
1. verteilter All-Flash-Speicher mit beispielloser hoher Leistung und garantierter geringer Latenz;
2. wirtschaftliche Hybridsysteme, die die meisten Grundlasten erfüllen.

Leistungsindikatoren


Abschließend zeigen wir einige Zahlen, die beim Testen von RAIDIX RAIN zur Konfiguration eines NVMe-Clusters mit 6 Knoten erhalten wurden. Wir stellen erneut fest, dass bei einer solchen Assembly (mit x86-64-Servern) das Produkt noch finalisiert wird und diese Zahlen nicht endgültig sind.

Testumgebung


  • 6 Knoten auf 2 Festplatten NVMe HGST SN100
  • IB-Karte Mellanox MT27700-Familie [ConnectX-4]
  • Linux Kernel 4.11.6-1.el7.elrepo.x86_64
  • MLNX_OFED_LINUX-4.3-1.0.1.0-rhel7.4-x86_64
  • Lokaler Überfall - Überfall 0
  • Externer Überfall - Überfall 6
  • Benchmark zum Testen von FIO 3.1


UPD: Das Laden wurde in 4K-Blöcken durchgeführt, sequentiell - 1 MB, Warteschlangentiefe 32. Das Laden wurde gleichzeitig auf allen Knoten des Clusters gestartet und die Tabelle zeigt das Gesamtergebnis. Verzögerungen überschreiten 1 ms (99,9 Perzentil) nicht.

Tabelle 2. Testergebnisse
LasttypWert
Zufälliges Lesen 100%4.098.000 IOps
Zufälliges Schreiben 100%517.000 IOps
Sequentielles Lesen 100%33,8 GB / s
Sequentielles Schreiben 100%12 GB / s
Zufälliges Lesen 70% / zufälliges Schreiben 30%1.000.000 IOps / 530.000 IOps
Zufälliges Lesen 50% / zufälliges Schreiben 50%530.000 IOps / 530.000 IOps
Zufälliges Lesen 30% / zufälliges Schreiben 70%187.000 IOps / 438.000 IOps

Source: https://habr.com/ru/post/de415961/


All Articles