Optimierung von Ceph-Speicher mit fortschrittlichen Netzwerklösungen
Mitarbeitende: Marc THOLL, Pol WARNIMONT, Marcin RZECZKOWSKI
Herausforderungen bei herkömmlicher Speicherung
In den letzten Jahren hat unser Unternehmen seinen Virtualisierungsstack mit einem herkömmlichen Speicheransatz betrieben, bei dem dedizierte Speichergeräte wie Dell EMC-Speicherschächte verwendet und über iSCSI oder Fibre Channel (FC) mit unseren Servern verbunden wurden. Zur Redundanz haben wir die Appliances verdoppelt. Unsere Full-Flash-Speicherlösungen wurden von Huawei bereitgestellt.
Mit unserem anhaltenden Bestreben, unseren Kunden cloud zur Verfügung zu stellen, die vollständig aus Luxemburg stammen und die Datenhoheit garantieren, und mit unserem fortschreitenden KI-Forschungsprojekt ist der Bedarf an einer hoch skalierbaren und zuverlässigen Datenspeicherlösung erheblich gestiegen.
Erster Versuch einer Lösung
Um diesem neuen Bedarf gerecht zu werden, haben wir uns zunächst für eine Änderung unseres Ansatzes entschieden. Wir sind zu einem dedizierten Storage Area Network (SAN) übergegangen. Wir arbeiten in zwei Rechenzentren und richteten zwei unabhängige SANs mit je einem Switch pro Seite ein, die über zwei geografisch getrennte passive Wellenlängen verbunden waren. Die Speicherplätze und Server waren jeweils mit beiden SANs verbunden, so dass uns vier Speicherpfade zur Verfügung standen. Bei diesem Aufbau wurde Multi-Path verwendet, um Redundanz über mehrere Pfade zu gewährleisten, die selbst nicht redundant waren. Jeder Server verfügte über zwei Netzwerkkarten, wobei ein Port pro Karte mit jedem SAN verbunden war, so dass insgesamt vier Pfade zur Verfügung standen. Diese Konfiguration stellte sicher, dass wir bei einem Ausfall eines einzelnen Geräts nie mehr als zwei Pfade verlieren würden.
Trotz dieser Maßnahmen mussten wir feststellen, dass wir nicht die erwartete Leistung erreichten, sobald alles installiert war. Herkömmliche Speichersysteme sind oft mit Problemen wie Skalierbarkeit, Verwaltungsaufwand und Herstellerabhängigkeit verbunden, was uns dazu veranlasste, nach alternativen Lösungen zu suchen.
Angesichts der aktuellen geopolitischen Lage und des Mangels an in Europa hergestellter Speicherhardware haben wir uns für einen anderen Ansatz entschieden. Durch die Abschaffung der Anbieterbindung und die Rückbesinnung auf einen Kernaspekt unserer Identität - Open-Source-Lösungen - wollen wir Innovationen fördern und die Flexibilität unserer Infrastruktur erhalten.
Ceph erforschen: Ein neuer Ansatz für die Speicherung
Unsere Systemadministratoren, die stets bestrebt sind, neue Technologien zu erforschen, schlugen vor, Ceph für unseren Speicherbedarf einzusetzen. Unsere bisherigen Erfahrungen mit herkömmlichen Speichersystemen waren nicht sehr zufriedenstellend, und wir waren motiviert, etwas Innovatives und potenziell Stabileres zu erkunden.
Ceph ist eine Open-Source-Speicherplattform, die für hervorragende Leistung, Zuverlässigkeit und Skalierbarkeit entwickelt wurde. Sie vereint Objekt-, Block- und Dateispeicher in einem einzigen Cluster und ist damit eine vielseitige Lösung für verschiedene Speicheranforderungen.
Nach einer Analyse, die zu dem Schluss kam, dass Ceph unsere Anforderungen in Bezug auf Redundanz und Skalierbarkeit erfüllen kann, gingen wir zur Auswahl der richtigen Hardware über. Die Entscheidung fiel auf Supermicro-Server. Die Server laufen mit 2x AMD EPYC 7313 16-Core Prozessoren und 128 GB RAM.
Für die Netzwerkeinrichtung entschieden wir uns, die bestehende Infrastruktur mit den beiden unabhängigen SANs zu nutzen. Nach einigen anfänglichen Hürden bei der Suche nach den richtigen Konfigurationen und dem Warten auf das Eintreffen der Hardware waren wir bereit, mit den Tests zu beginnen. Allerdings stießen wir bald auf ein großes Hindernis.
In Ceph gibt es zwei verschiedene Netzwerke:
- Cluster-Netzwerk:
- Wird von den Servern verwendet, um Daten untereinander zu synchronisieren.
- Öffentliches Netz:
- Bearbeitet den Cluster-Management-Verkehr (MONITOR).
- Erleichtert Ceph-Verbindungen zu Datennutzern, wie z. B. Virtualisierungshosts.
Die Herausforderung für uns bestand darin, dass das öffentliche Netzwerk in Ceph nur mit einem einzigen IP-Netzwerk konfiguriert werden kann. Diese Einschränkung hätte eine erhebliche Hürde für unsere Redundanzanforderungen darstellen können.
Um dieses Problem zu lösen, haben wir zwei mögliche Lösungen in Betracht gezogen:
- Neue switches:
- Stapeln von switches mit LACP:
Ein Vorschlag sah die Anschaffung neuer switches vor. Dies hätte das Problem zwar lösen können, war aber mit hohen Kosten verbunden und bot nur begrenzte zusätzliche Vorteile.
Die zweite Idee, die ebenfalls in vielen Foren vorgeschlagen wurde, bestand darin, die switches zu stapeln und das Link Aggregation Control Protocol (LACP) zu verwenden. Dieser Ansatz widersprach jedoch unserer ursprünglichen Designphilosophie für die beiden SANs. Wir hatten das Stacking bewusst vermieden, da wir in der Vergangenheit negative Erfahrungen gemacht hatten, z. B. dass sich Stacks während des Betriebs aufspalteten, was zu Netzwerkausfällen führte oder Schleifen bildete, die das gesamte Netzwerk störten.
Innovative Routing-Lösungen für Ceph
Beim Brainstorming über Lösungen schlug unsere Netzwerkabteilung eine innovative Idee vor. Obwohl das öffentliche Ceph-Netz nur ein IP-Präfix verarbeiten kann, ist es nicht erforderlich, dass alle IPs in derselben Broadcast-Domäne liegen. Diese Erkenntnis brachte uns dazu, das Routing des Datenverkehrs als praktikable Lösung in Betracht zu ziehen.
Erstmalige Einrichtung des Routings
Unsere ursprüngliche Routing-Lösung bestand darin, zwei Ceph-Knoten mit jedem SAN-Layer-3-Switch zu verbinden. Die switches würden OSPF (Open Shortest Path First) ausführen und die Netzwerke jedes Knotens ankündigen. Jeder Knoten wurde über alle vier seiner Schnittstellen in einem einzigen LACP-Portkanal (Link Aggregation Control Protocol) angeschlossen. Dieser Ansatz bot mehrere Vor- und Nachteile:
Vorteile:
- Einfaches Einrichten: OSPF läuft auf nur vier switches, was den Konfigurationsprozess vereinfacht.
- Schnittstellen-Redundanz: LACP bietet Redundanz auf der Schnittstellenebene und erhöht so die Zuverlässigkeit.
Nachteile:
- Auswirkungen eines Switch-Ausfalls: Der Ausfall eines Switches hat den Verlust von zwei kompletten Ceph-Knoten zur Folge, was die Redundanz gefährdet.
- Begrenzter Lastausgleich: Der Lastausgleich beschränkt sich auf den LACP-Trunk, wodurch die verfügbare Bandbreite möglicherweise nicht vollständig genutzt wird.
Optimierte Routing-Lösung
Da wir mit den Einschränkungen des ursprünglichen Ansatzes unzufrieden waren, haben wir eine robustere Lösung entwickelt: Full Routing. In dieser Konfiguration führt jeder Ceph-Knoten FRR (FRR) und OSPF unabhängig voneinander aus. Diese Konfiguration bietet mehrere entscheidende Vorteile:
- Verbesserte Redundanz: Jeder Knoten ist mit zwei switches verbunden, wodurch sichergestellt wird, dass der Ausfall eines Switches nicht zum Verlust des Knotens führt. Um die Zuverlässigkeit weiter zu erhöhen, wird Bidirectional Forwarding Detection (BFD) für eine sekundengenaue Fehlererkennung bei einem oder mehreren Verbindungsausfällen eingesetzt. Darüber hinaus wird ECMP-Routing (Equal-Cost Multi-Path) eingesetzt, um mehrere redundante Routen bereitzustellen und so die allgemeine Ausfallsicherheit des Netzwerks zu erhöhen.
- Effiziente Nutzung von Schnittstellen: Sowohl das öffentliche Netzwerk als auch das Clusternetzwerk arbeiten innerhalb desselben gerouteten Netzwerks, so dass Ceph die volle Bandbreite des Servers für beide Netzwerke je nach aktuellem Bedarf dynamisch nutzen kann.
- Stabilität der Dienste: Cluster- und öffentliche Dienste laufen auf Loopback-IPs, so dass sie nicht an bestimmte Schnittstellen gebunden sind, die ausfallen könnten.
- Verbesserter Lastausgleich: Die Lastverteilung wird durch den Einsatz von Equal-Cost Multi-Path (ECMP) Routing verbessert, das jedem Ziel acht verschiedene Pfade zur Verfügung stellt. Diese Konfiguration ermöglicht eine effektive Verteilung des Datenverkehrs auf mehrere Routen, optimiert die Bandbreitennutzung und gewährleistet eine ausgewogene Lastverteilung.
Ergebnisse und Erkenntnisse
Nachdem wir die vollständige Routing-Lösung für unseren Ceph-Cluster implementiert hatten, führten wir eine Reihe von Tests durch, um die Leistung und Redundanz zu bewerten. Es ist wichtig zu beachten, dass die Ceph-Instanz noch nicht hoch optimiert ist, aber die ersten Ergebnisse sind vielversprechend. Wir erreichten zufällige Lese-/Schreibgeschwindigkeiten von 3,6 GB/s, was eine deutliche Verbesserung gegenüber unserem vorherigen Setup darstellt. Diese Tests wurden mit branchenüblichen Benchmarking-Tools durchgeführt, um Genauigkeit und Zuverlässigkeit zu gewährleisten.
Zusätzlich zu den Leistungstests haben wir auch die Redundanz des Systems bewertet. Unsere Tests ergaben, dass ein Knoten bis auf eine Verbindung ausfallen kann, ohne dass dies Auswirkungen auf die Funktionalität hat, abgesehen von einer Verringerung der verfügbaren Bandbreite. Ebenso können alle Verbindungen zwischen den Rechenzentren (Inter-DC) bis auf eine ausfallen, ohne dass das System beeinträchtigt wird, obwohl dies ebenfalls zu einer Verringerung der verfügbaren Bandbreite führt. Diese Ergebnisse bestätigen die Robustheit und Zuverlässigkeit unserer gerouteten Ceph-Lösung.
Zukünftige Pläne
Mit Blick auf die Zukunft erwägen wir mehrere Verbesserungen, um unsere Ceph-Infrastruktur weiter zu verbessern. Eines unserer Hauptziele ist es, mehr Inter-DC-Links zwischen den SANs hinzuzufügen. Diese Erweiterung wird einen noch besseren Lastausgleich auf der Inter-DC-Seite ermöglichen und eine optimale Leistung und Ausfallsicherheit gewährleisten.
Durch die kontinuierliche Evaluierung und Verfeinerung unserer Netzwerkkonfiguration wollen wir einen hochgradig optimierten Ceph-Cluster erreichen, der unsere Leistungs- und Redundanzanforderungen erfüllt und letztlich unsere Kerngeschäftsprozesse effektiver unterstützt.
Rezente Artikel
Sprechen Sie mit einem Experten
Sprechen Sie direkt mit unseren Experten, die Ihnen gerne Einblicke und Antworten geben.