Energy Loss Siren: Making Meta resilient to energy loss occasions

In den Rechenzentren von Meta laufen Tausende von verteilten Diensten auf Millionen von Servern. Zur Gewährleistung der Zuverlässigkeit dieser Dienste gehört auch, sie widerstandsfähig gegenüber Stromausfallereignissen zu machen, da unsere Rechenzentrumsflotte wächst. Um die Ausfallsicherheit zu erhöhen, haben wir die Power Loss Siren (PLS) entwickelt – ein verteiltes Stromausfallerkennungs- und Warnsystem mit geringer Latenz auf Rackebene.

Stromausfallereignisse können Tausende von Servern gleichzeitig betreffen und potenziell zu einer Beeinträchtigung oder Ausfallzeit für viele Dienste führen, die von der Meta-App-Familie verwendet werden. PLS hilft, die Auswirkungen dieser Ereignisse zu mildern. Es nutzt vorhandene Batterien im Rack, um Dienste über einen bevorstehenden Stromausfall zu benachrichtigen, ohne dass zusätzliche Hardware erforderlich ist, sodass Techniker oder die Dienste selbst Maßnahmen ergreifen können. PLS bietet auch eine einfache API für Dienste, um Mitigation-Handler zu implementieren, während die Server im Akkubetrieb laufen. Mit PLS-Unterstützung können Dienste proaktiv und nicht reaktiv übergehen, nachdem Server ausgefallen sind.

PLS hat auch unser physisches Infrastrukturmanagement vereinfacht. Wir hoffen, dass die Lektionen, die wir in unserer vierjährigen Entwicklung von PLS gelernt haben, auch anderen dabei helfen können, Stromausfallereignisse in Rechenzentren in großem Umfang zu mindern.

Verstehen von Stromausfallereignissen im Rechenzentrum

In den Rechenzentren von Meta versorgen wir Server-Racks über eine baumartige Hierarchie von Stromgeräten mit Strom. Diese Struktur kann bis zu einer vorgegebenen Menge an IT-Last (Serverleistung) unterstützen. Die Verwendung einer hierarchischen Stromverteilung trägt zu einer besseren Fehlerisolierung bei und verhindert, dass Fehler stromaufwärts wandern. Wenn eines oder mehrere dieser Stromversorgungsgeräte ausfallen, verlieren alle zugrunde liegenden Server-Racks die Stromversorgung. Je höher in der Hierarchie der Stromausfall auftritt, desto größer ist die Anzahl der betroffenen Server.

Stromausfallereignisse können aus verschiedenen Gründen auftreten, darunter:

  1. Gerätefehler: Leistungsgeräte haben zufällig auftretende katastrophale Ausfälle oder elektrische Kurzschlüsse. Die meisten Stromausfallereignisse in Rechenzentren werden durch Ausfälle von Stromversorgungsgeräten verursacht.
  2. Spannungseinbrüche: Störungen in der Netzstromversorgung können zu Spannungseinbrüchen am Leistungsgerät führen. Dies führt zu Stromspitzen am Leistungsschalter und kann diesen auslösen, was zu einem Stromausfall in den Server-Racks führen kann.
  3. Wartungsfehler: Die regelmäßige Wartung von Stromversorgungsgeräten im Rechenzentrum erfordert häufig das Umschalten der Stromversorgung auf ein Reservestromgerät. Während dieser Art von offenen Stromübergängen kommt es zu einer kurzen Stromunterbrechung, zu der die Downstream-Server von mit Strom versorgt werden Batterien im Rack. Aber Stromübergänge scheitern gelegentlich, was zu einem totalen Stromausfall führt.

Stromausfallereignisse tragen zu einem erheblichen Teil aller korrelierten ungeplanten Serverausfälle bei. Stromausfallereignisse treten bei Geräten mit höherer Leistung seltener auf. Größere Ereignisse wirken sich jedoch auf viel mehr Server aus.

Stromausfall Sirene

Die PLS-Architektur und der Ereignisfluss

Ein Server-Rack besteht aus mehreren Servern, die über einen Top-of-Rack (TOR)-Switch miteinander verbunden sind. Racks haben auch Netzteile und Batterie-Backup-Einheiten. Netzteile wandeln Eingangswechselstrom in Gleichstrom für Server um. Batterie-Backup-Einheiten können 90 Sekunden Backup-Leistung während eines Stromausfalls am Eingang bereitstellen.

PLS hat zwei Hauptkomponenten:

  1. PLS-Relais (Erkennung): PLS Relay ist ein Überwachungs-Daemon, der auf allen Rack-Switches läuft. Es überwacht kontinuierlich Netzteile auf Eingangswechselstromverluste. Wenn ein Ausfall erkannt wird, warnt PLS Relay alle Server im Rack mindestens 45 Sekunden im Voraus über einen bevorstehenden Stromausfall.
  2. PLS-Handler (Mitigation): PLS Handler ist ein Listener-Daemon, der auf allen Servern läuft. Es empfängt Warnungen vom PLS-Relais, während das gesamte Rack mit Batteriestrom betrieben wird. Es initiiert dann einen konfigurierbaren Handler, um den bevorstehenden Serverausfall abzuschwächen.

PLS Relay läuft auf allen TOR-Switches und PLS Handler läuft auf allen Servern. Daher müssen beide Daemons einfach zu warten, ressourceneffizient und äußerst zuverlässig bei der Erkennung von Stromausfallereignissen sein. Es ist auch erwähnenswert, dass die gesamte PLS-Erkennungssoftware lokal auf dem Rack ausgeführt wird. Die Unabhängigkeit von Remote-Systemen trägt zu einer hohen Zuverlässigkeit und geringen Latenz bei der Erkennung und Alarmierung von Stromausfall bei. Die Dienstbesitzer konfigurieren den Mitigation-Handler, der je nachdem, welche Dienste bei einem Stromausfall auf dem Server ausgeführt werden, unterschiedlich ist.

So funktioniert der PLS-Abschwächungsablauf während eines Stromausfallereignisses:

  1. Verlustleistung: Ein Stromausfall an einem vorgeschalteten Stromversorgungsgerät führt dazu, dass Server-Racks den Eingangswechselstrom verlieren. Die Batterien im Rack entladen sich, um den Switch und die Server weiterhin zu unterstützen. Wie bereits erwähnt, können Batterien 90 Sekunden lang die Stromversorgung des Racks unterstützen.
  2. Signalisierung des Rack-Schalters: Wenn die Eingangsstromversorgung des Racks nicht innerhalb von 45 Sekunden wiederhergestellt wird, senden die Netzteile ein Signal an den Switch, um einen bevorstehenden Stromausfall anzuzeigen. Die 45-Sekunden-Wartezeit dient der Berücksichtigung des erwarteten Stromübergangs während der Wartung von Leistungsgeräten oder des Netzstrom-Failovers zu Backup-Generatoren.
  3. Benachrichtigungssendung: Das PLS-Relais fragt kontinuierlich das Stromausfallsignal von der Stromversorgung ab. Wenn es bemerkt, dass das Signal bestätigt wurde, sendet es einen Link-Local-UDP-Multicast, um alle Server zu warnen.
  4. Minderungsmaßnahmen: PLS-Handler warten kontinuierlich auf UDP-Warnungen und führen Minderungs-Handler aus, die von Diensten konfiguriert werden, die auf dem Server ausgeführt werden.
  5. Stromausfall des Servers: Schließlich, 90 Sekunden nach dem anfänglichen Stromausfall des Racks, sind die Batterien leer und alle Server im Rack verlieren den Strom.

Stromausfall Sirene

Wie PLS die Servicezuverlässigkeit verbessert

Hier sehen Sie, wie PLS dazu beiträgt, die Auswirkungen von Stromausfallereignissen auf zwei der Dienste von Meta zu mindern:

PLS und einzelne Primärdatenbanken

Der Benutzerdatenspeicher von Meta (Posts, Likes, Kommentare usw.) wird als geo-verteilt bereitgestellt MySQL-System. Daten werden geteilt, wobei jeder Shard eine primäre Instanz und mehrere sekundäre Instanzen hat. Dies bildet einen Replikatsatz, der global über verschiedene Rechenzentren verteilt ist. Ein bestimmter Server hostet mehrere Instanzen, die eine Mischung aus primären und sekundären Instanzen verschiedener Shards sein können.

MySQL leitet Leseaktionen (Browsing von Beiträgen, Kommentaren usw.) entweder an eine primäre oder eine sekundäre Instanz weiter. MySQL leitet Schreibaktionen (Posts, Likes, Kommentare usw.) an die primäre Instanz. Der primäre Stream streamt asynchron Schreibaktionen an die sekundären des Shards. Die primäre Instanz streamt außerdem Transaktionsprotokolle an die Protokollsicherungseinheiten (LBU). Nach Abschluss des Schreibens in ihren eigenen Speicher und Empfangen einer Schreibbestätigung von mindestens einer LBU sendet die primäre Instanz ein Schreiberfolgssignal zurück an den Client. MySQL weist LBUs unter einem anderen Root Power Device (MSB) zu, um Datenverluste bei ungeplanten Primärausfällen zu vermeiden.

Stromausfall Sirene

Wenn ein ungeplanter Serverausfall auftritt, sind alle darauf gehosteten Primärdateien für Schreibvorgänge nicht verfügbar. Ohne das primäre schlagen Schreibaktionen fehl. Die Wiederherstellung erfolgt automatisch – die Sekundären starten eine Hochstufungssequenz, wenn sie feststellen, dass sie keine Herzschläge an die Primäre übertragen können. Für jeden nicht verfügbaren primären Server wählt MySQL einen entfernten sekundären (in einer anderen Rechenzentrumsregion) als primären Kandidaten aus. Der Kandidat informiert sich über das neueste Update in den LBUs. Dann wird der Kandidat der neue primäre. MySQL leitet alle neuen Schreibanforderungen an die neu gewählte Primärdatenbank. Insgesamt dauert die Fehlererkennung durch die Sekundärteile, gefolgt von der Beförderung, in der Größenordnung von mehreren zehn Sekunden.

Ein groß angelegter, ungeplanter Ausfall, der Server betrifft, die primäre Shards hosten, kann sich auf Funktionen wie das Posten, Liken und Kommentieren auswirken. MySQL verwendet PLS, um proaktiv eine entfernte Sekundärseite für jede Primärseite heraufzustufen, bei der ein Stromausfall auftritt. Da PLS ein qualitativ hochwertiges Signal über einen bevorstehenden Stromausfall bietet, müssen wir nicht mehrere Versuche unternehmen, eine Verbindung zu einem toten Server herzustellen, bevor wir entscheiden, dass er ungesund ist. Während wir die Remote-Sekundärseite darauf vorbereiten, die Rolle der Primärseite zu übernehmen, verarbeitet die vorherige Primärseite weiterhin Schreibanforderungen, da sie mit Batteriestrom betrieben wird. Es gibt eine kleine Ausfallzeit, um die Rollen vom alten zum neuen primären zu wechseln, aber es ist für den Endbenutzer praktisch unsichtbar.

PLS und Webserver

Die Webschichten bei Meta bestehen aus Servern, die alle Seitenladevorgänge auf allen Plattformen (Android, iOS und Webbrowser) für Meta und interne Webanwendungen bereitstellen. Sie sind in allen Meta-Rechenzentren präsent. Webserver sind zustandslose PHP-Server, die Webinhalte bereitstellen. Ein Reverse-Proxy steht vor der Webschicht, deren Verantwortlichkeiten Sicherheit (z. B. TLS-Handshake), Lastausgleich, Caching, Komprimierung usw. umfassen.

Wenn ein ungeplanter Ausfall einen Webserver betrifft, verlieren wir alle Anfragen, egal ob in der Warteschlange oder in Bearbeitung. Diese manifestieren sich als Timeouts – was zu längeren Latenzen beim Laden von Seiten aufgrund von Wiederholungsversuchen oder sogar völligen Anwendungsfehlern führt.

Mit PLS-Warnungen senden wir keine neuen Anfragen an die betroffenen Server. Um dies zu erreichen, beginnt der Server mit einem ordnungsgemäßen Herunterfahren. Es meldet auch eine schlechte Integritätsmetrik an den Load Balancer, um den Empfang neuer Anforderungen zu vermeiden. Wenn ein Webserver als Reaktion auf PLS ​​heruntergefahren wird, bearbeitet er weiterhin Anfragen, die entweder in der Warteschlange stehen oder verarbeitet werden, bis die Notstromversorgung der Batterie erschöpft ist.

Bei großen Stromausfallereignissen kann die Spitzenfehlerrate auf bis zu Hunderttausende von Anfragen pro Sekunde ansteigen. Insgesamt reduziert die Nutzung von PLS-Signalen die Spitzenfehlerrate bei Stromausfallereignissen auf einige Tausend Fehler pro Sekunde (eine 100-fache Reduzierung).

Wie PLS das physische Infrastrukturmanagement vereinfacht

In der Vergangenheit wurden bestimmte Bereiche der Rechenzentren von Facebook als Reihen mit doppelter Stromversorgung für Server-Racks gebaut, um die Datenspeicherung (für eine höhere Zuverlässigkeit) zu unterstützen. Diese Reihen von Server-Racks werden an zwei unabhängige Steckdosen angeschlossen, die über unabhängige Stromquellen im Rechenzentrum verfügen. Wenn die primäre Stromquelle einen Stromausfall erleidet, speist die Switching-Infrastruktur automatisch Strom aus der sekundären Quelle.

Reihen mit doppelter Stromversorgung schützten Dienste gegen die häufigste Ursache von Stromausfallereignissen – Ausfälle von Reihenstromgeräten. Sie lösten jedoch andere praktische Probleme nicht und erzwangen bestimmte Kapazitätsanforderungen. Konkret behandelten sie nicht:

  1. Begrenzte Leistungsredundanz: Reihen mit doppelter Stromversorgung hatten nur redundante Stromquellen bis zur SB-Ebene des Stromlieferungsbaums. Obwohl weniger häufig, würde ein Leistungsverlust auf der MSB-Ebene diese Reihen beeinträchtigen.
  2. Zusätzliche Anforderungen an den Serverpuffer: Um die Dienste bei Stromausfallereignissen aufrechtzuerhalten, weisen wir zusätzliche Pufferserverkapazität zu. Bei Reihen mit zwei Kabeln werden alle Speicher-Racks, auf denen MySQL ausgeführt wird, in derselben Reihe innerhalb desselben MSB platziert. Dies erforderte, dass die Standorte über eine ganze Reihe von Lagerregalen als Pufferkapazität für den Fall verfügen, dass das entsprechende MSB Strom ausfällt.
  3. Unterauslastung der Leistung: Für Stromversorgungsgeräte, die eine Reihe mit zwei Stromversorgungen speisen, Das Strombudget für Racks wird doppelt gezählt, da die beiden Pfade dieselbe Reihe speisen. Nur eine Stromquelle speist die Racks aktiv, während die andere Hälfte verschwendet wird.

Die PLS-Unterstützung verarbeitet automatisch Stromausfallereignisse auf Zeilen- und MSB-Ebene. Infolgedessen müssen wir keine Reihen mit doppelter Stromversorgung mehr aufbauen und warten. Außerdem können wir sie ohne die Beschränkungen, MySQL-Hosting-Speicher in Reihen mit zwei Kabeln zu platzieren, gleichmäßig über das Rechenzentrum verteilen. Dies verbessert die Fehlertoleranz und reduziert zusätzliche Pufferanforderungen.

Zukünftige Arbeit: Bewältigung der anhaltenden Herausforderung von Stromausfallereignissen

Mit dem Wachstum unserer Rechenzentrumsflotte wächst auch unser Bedarf, die Auswirkungen von Stromausfallereignissen zu mindern. Angesichts dieser Herausforderungen untersuchen wir aktiv weitere Anwendungen für PLS und integrieren neue Dienste darin. Einige unserer laufenden Bemühungen umfassen:

  1. Verbesserung der Ressourceneffizienz: Tektonik ist der verteilte Dateisystemdienst von Meta, der für große Anwendungen wie Medien- und Datenanalysespeicher verwendet wird. Derzeit leert Tectonic den Festplatten-Cache bei jedem permanenten Schreibvorgang. Dies gewährleistet die Beständigkeit gegenüber möglichen ungeplanten Stromausfallereignissen, die ungelöschte Festplatten-Caches löschen würden. Mit PLS können Spülvorgänge verschoben werden, bis ein Stromausfall auftritt. Dies würde das Zusammenfügen von Schreibvorgängen ermöglichen – Ausgabe größerer Schreibvorgänge auf die Festplatte nach dem Puffern von Daten in Festplatten-Caches. Unsere vorläufige Experimente zeigen, dass hier ein erhebliches Potenzial für die E/A-Effizienz besteht – etwa 13 Prozent Reduzierung der Festplattenauslastung und etwa 50 Prozent Reduzierung der Schreiblatenz.
  2. Umgang mit rechenzentrumsweiten Verlustereignissen: Derzeit kann PLS für alle unsere Client-Services bis zu einem Leistungsverlustereignis der Größe MSB skaliert werden. In der aktuellen Generation unserer Server-Racks mussten wir PLS so entwickeln, dass das vorhandene Batteriedesign, das bereits in den Racks vorhanden ist, genutzt wird. Bei zukünftigen Rack-Designs für Rechenzentren planen wir, die Batteriekapazität zu erhöhen, um Stromausfallereignisse im gesamten Rechenzentrum zu bewältigen.

Comments are closed.