Einfache Ausfallsicherung fĂŒr eine Webseite (Monitoring + dynamisches DNS)

In diesem Artikel möchte ich zeigen, wie einfach und kostenlos man ein Failover-Schema fĂŒr eine Website (oder jeden anderen Internetdienst) mit einer Kombination aus Monitoring okerr und einem dynamischen DNS-Service erstellen kann. Das bedeutet, im Falle von Problemen mit der Hauptseite (von „PHP-Fehler“ auf der Seite bis hin zu Platzmangel oder einer verdĂ€chtig geringen Anzahl von Bestellungen bei einem Online-Shop) werden neue Besucher auf einen zweiten (dritten usw.) nachweislich funktionierenden Server oder auf eine „Entschuldigung“-Seite geleitet, auf der ihnen höflich erklĂ€rt wird, dass „es ein Problem gibt, wir sind bereits informiert und arbeiten daran, es bald zu beheben“ (in diesem Fall sind Sie tatsĂ€chlich bereits informiert und können es beheben).

Mit oder ohne Failover leben?

Solange kein Problem auftritt, gibt es keinen großen Unterschied. Wenn es jedoch eintritt, passiert ohne Failover oft Folgendes: Sie versuchen schnell herauszufinden, wo das Problem liegt, schaffen es nicht (Backups lassen sich nicht wiederherstellen, die Software funktioniert aus irgendwelchen GrĂŒnden nicht wie in der Dokumentation beschrieben usw.), und es bleibt keine Zeit, die Server-Websites liegen, die Kunden rufen an, alle sind nervös, und Sie versuchen irgendwie grob und dreckig „auf Klebeband“ zu reparieren, dann lĂ€uft es vielleicht mit einer Notlösung und lebt weiter. Sie denken, dass Sie sich spĂ€ter genauer damit befassen und alles schön umgestalten mĂŒssen, aber es gibt nichts Dauerhaftes als das TemporĂ€re.

Jetzt, wie es im schönen Fall mit Failover ablÀuft:

  • Ein Fehler tritt auf
  • Der Fehler wird automatisch erkannt
  • Eine Benachrichtigung wird versendet
  • Der Wechsel zu einem der Backup-Server wird durchgefĂŒhrt
  • Das Problem wird ruhig und ohne Panik analysiert, behoben und der Server wird wieder in Betrieb genommen.

In diesem Schema können natĂŒrlich auch eigene Probleme auftreten, aber dennoch handelt es sich um ein lineares Schema. Jeder Schritt ist hier einfach, und das Wichtigste — er kann separat getestet werden, weshalb die Wahrscheinlichkeit eines Ausfalls dieses Schemas viel geringer ist. Alle Aktionen können automatisiert und schnell ausgefĂŒhrt werden (im Gegensatz zur Aufgabe, ein unbekanntes episches Problem zu finden und zu beheben). Ihr Flugzeug landet in einem fernen Land, Sie schalten Ihr Telefon ein und sehen in Telegram eine Benachrichtigung, dass der Server ausgefallen ist, aber alles ist gut, der Backup-Server wurde aktiviert, Sie können Ihre Reise fortsetzen, Sie mĂŒssen weder zurĂŒckfliegen noch per SSH aus dem nĂ€chsten CafĂ© mit WiFi reparieren. Sie können es erledigen, wenn es gĂŒnstiger ist.

Die Zukunft ist bereits hier!

FrĂŒher bestand das Hauptproblem, das Failover oft zu einer unannehmbaren Lösung machte, in den Gesamtkosten dafĂŒr. Entweder musste man teure Hardware kaufen (und noch teurere Spezialisten einladen). Oder man musste etwas Komplexes nach Anleitungen basteln (ich habe sogar ein Beispiel gesehen, wo zwei Server zusĂ€tzlich mit einem Nullmodemkabel verbunden werden und darĂŒber ein Heartbeat gesendet wird, damit der Backup-Server im richtigen Moment die Kontrolle ĂŒbernehmen kann). Jetzt gibt es einfachere und kostenlose Möglichkeiten. Wenn Sie eine Website mit Katzen haben, gibt es keine Ausrede, wenn Sie fĂŒr diese noch kein Failover implementiert haben!

Außerdem wird fĂŒr das Failover-Schema noch ein Server benötigt (vielleicht sogar mehr als einer), und frĂŒher war das mit hohen Kosten verbunden, jetzt kann man sich fĂŒr ein paar Cent einen VDS sichern.

Die zuverlÀssigste Katzen-Website

Zur praktischen Veranschaulichung der Lösung mit okerr + dynamischem DNS haben wir unsere eigene Katzen-Website gestartet cat.okerr.com. Wir hassen Katzen, deshalb wird es dort fast keine geben. Es gibt insgesamt drei Websites, die alle ungefÀhr gleich aussehen (alle mit demselben Template), aber mit unterschiedlichen KÀtzchen, damit man sie leicht unterscheiden kann, und jede gibt technische Informationen an, um zu sehen, wie das Failover funktioniert. Die Seite aktualisiert sich jede Minute von selbst, aber man kann immer auch im Browser auf Aktualisieren klicken.

In den technischen Informationen gibt es die Zeile „status=OK“. Manchmal simulieren die Server Probleme und zeigen „status=ERR“. Der Hauptserver „fĂ€llt“ zu jeder vollen Stunde in den ersten 20 Minuten (0:20, 1:20, 2:20, ...). Der Backup-Server in der 40. Minute. Der letzte Server (der „sorry“-Server) ist immer online. Um 0 Minuten jeder Stunde, „erholen“ sich der Haupt- und der Backup-Server.

Einfache Ausfallsicherung fĂŒr eine Webseite (Monitoring + dynamisches DNS)

Wenn Sie die Website öffnen und sie im Tab lassen, werden Sie sehen, dass sie nie ausfĂ€llt (obwohl jeder einzelne Server gelegentlich ein Problem simuliert), und bei einem Serverproblem „springt“ es einfach zwischen den aktiven Servern hin und her. Das Bild, der Name und die Adresse des Servers sowie dessen Rolle Ă€ndern sich. Manchmal kann man den Moment erwischen, wenn „status=ERR“ angezeigt wird (das Problem ist bereits vorhanden, aber das gesamte Failover-System hat noch nicht funktioniert), aber die nĂ€chste Aktualisierung zeigt Ihnen dann die Seite von der aktiven Website.

Failover mit okerr + dynamischem DNS

Schauen wir uns an, wie das im Hintergrund funktioniert. Die Aufgabe des Failovers besteht darin, dass die Adresse cat.okerr.com immer auf die IP-Adresse des aktiven Servers verweist.
Hinter jedem der Server, die unsere Katzen-Website bei okerr hosten, gibt es einen Indikator, der einmal pro Minute seinen Status ĂŒberprĂŒft.

Einfache Ausfallsicherung fĂŒr eine Webseite (Monitoring + dynamisches DNS)

Auf diesem Screenshot sehen wir, wie die Website cat.okerr.com vom Server alpha.okerr.com aus ĂŒberprĂŒft wird. Die Seite sollte den Status=OK enthalten, und wie wir oben sehen, ist der Status des Indikators derzeit OK. Wenn der Server „ausfĂ€llt“, wird es ERR sein. (Das ist nur ein Beispiel fĂŒr einen Indikator; okerr ist ein Monitoring-System, daher kann man jeden Typ von Indikator anhĂ€ngen, zum Beispiel freien Speicherplatz auf der Festplatte ĂŒberprĂŒfen, die Anzahl neuer Bestellungen in der Datenbank, und sogar logische Indikatoren, bei denen nachts andere Fehlerkriterien gelten als tagsĂŒber).

In den Projekteinstellungen haben wir ein Failover-Schema mit diesen Indikatoren erstellt:

Einfache Ausfallsicherung fĂŒr eine Webseite (Monitoring + dynamisches DNS)

Das Schema enthĂ€lt drei Indikatoren (drei Server), die nach PrioritĂ€ten unterschiedlich sind. Der Hauptserver fĂŒr die Website ist charlie; wenn dieser nicht funktioniert (kein „status=OK“ oder einfach nicht erreichbar ist), dann bravo und im letzten Fall alpha. Auf der rechten Seite der Seite wird der Status des DNS-Eintrags auf verschiedenen Servern angezeigt.

FĂŒr diejenigen, die bemerkt haben, dass der Name cat.he.okerr.com verwendet wird: Wir benutzen ein etwas komplizierteres Schema. Anstatt einfach den DNS-Eintrag von cat.okerr.com zu Ă€ndern, Ă€ndern wir cat.he.okerr.com (bei einem Dynamic DNS-Anbieter Hurricane Electric), und cat.okerr.com ist ein CNAME (Alias), der sich nicht Ă€ndert und immer auf cat.he.okerr.com verweist. Hurricane gefĂ€llt uns einfach besser als dynamischer DNS-Anbieter, und es hat SchlĂŒssel zur Verwaltung eines einzelnen Eintrags (nicht der gesamten Zone), was uns sicherer erscheint. Sie können auch keine Passwort-Keys zur Verwaltung der gesamten Domain in okerr angeben, sondern nur fĂŒr die Subdomain oder den Eintrag.

Von Ausfall zu Erfolg

So funktioniert dieses Schema Schritt fĂŒr Schritt:

  1. Es tritt ein Problem (simuliert) auf dem Server auf
  2. Der okerr-Sensor ĂŒberprĂŒft einmal pro Minute den Status jedes Servers und meldet diesen an den Hauptserver des Projekts in okerr
  3. Der Indikator des entsprechenden Servers Àndert den Status von OK auf ERR
  4. Bei einer StatusĂ€nderung des Indikators wird das Failover neu berechnet, und es wird ermittelt, welche Adresse gesetzt werden muss (wenn nötig. Zum Beispiel, wenn der Hauptserver funktioniert, wĂ€hrend der Backup-Server ausgefallen ist – es gibt keine Änderungen)
  5. Diese Adresse wird dem Dynamic DNS-Dienst gemeldet. Nachdem dieser Schritt abgeschlossen ist, sehen Sie rechts den Status „synced“
  6. Sehr bald (in Sekunden) wird der Eintrag die DNS-Server Ihrer Domain erreichen (bei der Katzen-Website handelt es sich um ns1-ns5.he.net).
  7. Ab diesem Moment werden einige Nutzer bereits auf den neuen Live-Server zugreifen. Doch nicht alle DNS-Server weltweit haben ihre EintrĂ€ge aktualisiert, und irgendwo könnte noch der alte Eintrag im Cache vorhanden sein. Man kann beobachten, wie die Daten auf öffentlichen DNS-Servern „tanzen“, indem sie mal den neuen, mal den alten Wert anzeigen. Wenn man die Seite fĂŒr die Failover-Einstellungen aktualisiert, wird okerr automatisch neue Daten von den DNS-Servern anfordern.
  8. Nachdem sich die Daten stabilisiert haben, ist der alte, zwischengespeicherte Eintrag ĂŒberall abgelaufen – 100% aller Anfragen gehen auf den neuen Server.

Um die 7. Phase (oft die lÀngste) zu beschleunigen, sollte TTL des dynamischen DNS-Eintrags so niedrig wie möglich eingestellt werden. In der Regel erlauben die Dienste Intervalle von 90-120 Sekunden. Das ist ein durchaus angemessener Kompromiss.

ZusÀtzlich

All dies kann an einem Abend eingerichtet werden (wenn Sie bereits einen redundanten Server haben). Sowohl okerr als auch die dynamischen DNS-Dienste sind kostenlos. Um in okerr mehr PrĂŒfungen zu erhalten und die PrĂŒfzeit zu verkĂŒrzen, mĂŒssen Sie ein Training absolvieren (von der Profilseite aus). Nach Abschluss wird das Niveau sofort erhöht (20 Indikatoren pro Stunde + 1 schneller, 10-minĂŒtiger). Und wenn das nicht ausreicht, schreiben Sie an support@okerr.com, wahrscheinlich kann das erhöht werden (bis jetzt gab es immer die Möglichkeit, mehr zu bekommen, ich wurde nie abgelehnt, im Gegenteil, ich habe es selbst angeboten). Ich möchte nur nicht jedem alles versprechen, da ich mir nicht sicher bin, ob ich genĂŒgend Ressourcen habe, um mein Wort zu halten. Aber solange es nicht viele Nutzer gibt, gibt es keine Probleme mit der Erhöhung der Limits.

Was okerr insgesamt kann – sehen Sie auf der Website PrĂ€sentation. Im Grunde ist das ein Monitoring (Zabbix aus der Cloud), und der Failover ist eine angenehme Zusatzfunktion. Außerdem kann man ohne Registrierung ĂŒber die Website in die Demo gehen.

Bei einer Änderung des Statusindikators wird eine Benachrichtigung per E-Mail oder Telegram gesendet. (Wir haben uns angesehen, was passiert, und festgestellt, dass Telegram anscheinend der zuverlĂ€ssigste Messenger ist. Danke an die RKN fĂŒr den Stresstest!) Bei richtiger Konfiguration von okerr ist jede Benachrichtigung entweder ein Signal „Lasst alles liegen, wir mĂŒssen es reparieren!“, oder „Abbruch!“. Es sollten keine ĂŒberflĂŒssigen Alarme von okerr kommen (wenn sie vorhanden sind – muss anders konfiguriert werden). Zum Beispiel simuliert fĂŒr unsere Katzen-Website der Server alpha nie einen Fehler. Wenn er ausfĂ€llt, mĂŒssen wir Bescheid wissen. Alle anderen Server simulieren stĂ€ndig Fehler, daher haben diese Indikatoren den Status „stumm“, um zu vermeiden, dass man mehrmals pro Stunde Alarme erhĂ€lt.

Es macht auch Sinn, einen Sorry-Server (bei jedem gĂŒnstigen Hosting-Anbieter) einzurichten, der entweder Ihre Entschuldigungsseite hat (fĂŒr den Fall, dass alle Haupt- und Backup-Server ausfallen) oder auf die Statusseite bei okerr umleitet (zum Beispiel unsere cp.okerr.com/status/okerr) oder statuspage.io.

Quelle: habr.com

60GB SSD 8Gb DDR4