Einfaches Failover für Website (Überwachung + dynamisches DNS)

In diesem Artikel möchte ich zeigen, wie einfach und kostenlos Sie mithilfe einer Kombination aus Überwachung ein Failover-Schema für eine Website (oder einen anderen Internetdienst) erstellen können okerr und dynamischer DNS-Dienst. Das heißt, im Falle von Problemen mit der Hauptseite (von einem Problem mit einem „PHP-Fehler“ auf der Seite bis hin zu Platzmangel oder einfach einer verdächtig geringen Anzahl von Bestellungen im Falle eines Online-Shops) werden neue Besucher dies tun Sie werden an den zweiten (dritten usw.) Server weitergeleitet, von dem bekannt ist, dass er funktioniert, oder auf die Seite „Entschuldigung“, wo höflich erklärt wird: „Es liegt ein Problem vor, wir sind uns dessen bereits bewusst und beheben es bereits.“ werde es bald beheben“ (und in diesem Fall wissen Sie eigentlich schon Bescheid und können reparieren).

Mit oder ohne Failover leben?

Bis ein Problem auftritt, gibt es keinen großen Unterschied. Aber wenn es passiert, passiert ohne Failover oft Folgendes: Sie versuchen schnell herauszufinden, wo das Problem liegt, es funktioniert nicht (Backups werden nicht bereitgestellt, die Software funktioniert aus irgendeinem Grund nicht so, wie sie laut Dokumentation sollte). , usw.), aber es gibt keine Zeit, keinen Server - die Sites liegen still, Kunden rufen an, alle sind nervös, Sie versuchen, es irgendwie grob und schmutzig „mit Klebeband“ zu reparieren, und dann scheint es irgendwie zu starten mit Krücken und Leben. Sie denken, dass Sie in Ihrer Freizeit detaillierter darüber nachdenken und alles schön wiederholen müssen, aber nichts ist dauerhafter als vorübergehend.

Nun, wie das in einer schönen Version mit einem Filer geschieht:

  • Ein Fehler passiert
  • Der Fehler wird automatisch erkannt
  • Alarm wird verschickt
  • Der Wechsel zu einem der Backup-Server wird übertragen
  • In aller Ruhe und ohne Panik wird das Problem geklärt, behoben und der Server wieder in Betrieb genommen.

Dieses Schema kann natürlich auch seine eigenen Probleme haben, aber dennoch ist das Schema linear, jede Stufe ist einfach und die Hauptsache ist, dass es separat debuggt werden kann, sodass die Wahrscheinlichkeit eines Ausfalls dieses Schemas viel geringer ist Alle Aktionen können automatisiert und schnell ausgeführt werden (im Gegensatz zur Aufgabe, unbekannten epischen Mist zu finden und zu reparieren). Ihr Flugzeug ist in einem fernen Land gelandet, Sie schalten Ihr Telefon ein und sehen in einem Telegramm eine Benachrichtigung, dass der Server abgestürzt ist, aber alles ist in Ordnung, der Backup-Server wurde aktiviert, Sie können Ihre Reise fortsetzen, das brauchen Sie nicht zurückfliegen oder es per SSH vom nächstgelegenen Café mit WLAN reparieren. Du wirst es herausfinden, wenn es bequemer ist.

Die Zukunft ist schon da!

Bisher war das Hauptproblem, das ein Failover oft zu einer inakzeptablen Lösung machte, die Höhe der damit verbundenen Kosten. Oder es war notwendig, teure Hardware zu kaufen (und noch teurere Spezialisten einzuladen). Oder kollektiv etwas Kompliziertes nach den Anleitungen bewirtschaften (ich bin sogar auf eine Option gestoßen, bei der zwei Server zusätzlich mit einem Nullmodemkabel verbunden sind und sie einen Heartbeat darüber senden, damit der Backup-Server es zum richtigen Zeitpunkt erkennt und übernimmt Kontrolle). Jetzt gibt es einfachere und kostenlose Möglichkeiten. Wenn Sie eine Website mit Katzen haben, gibt es keine Entschuldigung dafür, noch kein Failover zu implementieren!

Nun, außerdem benötigen Sie für ein Failover-System einen weiteren Server (und möglicherweise mehr als einen), und früher war dies eine große Ausgabe, jetzt können Sie einen VDS für ein paar Cent bekommen.

Die zuverlässigste Seite mit Katzen

Um die Lösung mit okerr + dynamischem DNS praktisch zu veranschaulichen, haben wir unsere Website mit Katzen gestartet cat.okerr.com. Wir hassen Katzen, deshalb wird es dort nicht viele davon geben. Insgesamt gibt es drei Sites, jede sieht ungefähr gleich aus (alle auf derselben Vorlage), aber mit unterschiedlichen Kätzchen, um die Unterscheidung zu erleichtern, und jede einzelne schreibt technische Informationen, um zu sehen, wie Failover funktioniert. Die Seite aktualisiert sich alle 1 Minute selbst, Sie können jedoch jederzeit im Browser auf „Neu laden“ klicken.

In den technischen Informationen gibt es eine Zeile „status=OK“. Manchmal täuschen Server Probleme vor und schreiben den Status=ERR. Der Hauptserver „scheint alle 20 Minuten jeder Stunde abzustürzen“ (0:20, 1:20, 2:20, …). Backup-Server in 40 Minuten. Der letzte Server („sorry“-Server) läuft immer. Bei 0 Minuten jeder Stunde werden der Primär- und der Backup-Server „wiederhergestellt“.

Einfaches Failover für Website (Überwachung + dynamisches DNS)

Wenn Sie die Site öffnen und im Tab belassen, werden Sie feststellen, dass sie nie abstürzt (obwohl jeder einzelne Server regelmäßig ein Problem simuliert) und im Falle eines Problems mit dem Server einfach zwischen Live-Servern „läuft“. Das Bild, der Name und die Adresse des Servers sowie seine Rolle ändern sich. Manchmal können Sie den Moment abfangen, in dem der Status = ERR ist (das Problem besteht bereits, aber das gesamte Failover-Schema hat noch nicht funktioniert), aber beim nächsten Update wird Ihnen eine Seite der funktionierenden Site angezeigt.

Failover auf okerr + dynamischem DNS

Mal sehen, wie es unter der Haube funktioniert. Die Aufgabe des Filers besteht darin, sicherzustellen, dass die Adresse cat.okerr.com immer auf die IP-Adresse des Arbeitsservers verweist.
Hinter jedem der Server, die unsere Katzenseite in okerr hosten, befindet sich ein Indikator, der einmal pro Minute seinen Status überprüft.

Einfaches Failover für Website (Überwachung + dynamisches DNS)

In diesem Screenshot sehen wir, wie die Site cat.okerr.com vom Server alpha.okerr.com überprüft wird. Die Seite sollte status=OK enthalten, und wie wir oben sehen, ist unser Indikatorstatus jetzt OK. Wenn der Server „ausfällt“, kommt es zu einem ERR. (Dies ist nur ein Beispiel für einen Indikator. Okerr überwacht ihn. Sie können also jede Art von Indikator anhängen, um beispielsweise den freien Speicherplatz auf der Festplatte, die Anzahl neuer Bestellungen in der Datenbank und sogar logische Indikatoren zu überprüfen , nachts gibt es einige Fehlerkriterien, tagsüber andere).

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

Einfaches Failover für Website (Überwachung + dynamisches DNS)

Das Schema verfügt über drei Indikatoren (drei Server) mit unterschiedlicher Priorität. Der Hauptserver für die Site ist Charlie. Wenn er nicht funktioniert (er hat nicht „Status=OK“ oder ist einfach nicht verfügbar), dann Bravo und im letzteren Fall Alpha. Auf der rechten Seite der Seite wird der Status des DNS-Eintrags auf verschiedenen Servern angezeigt.

Für diejenigen, denen aufgefallen ist, dass der Name cat.he.okerr.com verwendet wird: Wir verwenden ein etwas komplexeres Schema. Anstatt nur den DNS-Eintrag von cat.okerr.com zu ändern, ändern wir cat.he.okerr.com (beim dynamischen DNS-Anbieter). Hurrikan elektrisch) und cat.okerr.com ist ein CNAME (Alias), der sich nicht ändert und immer auf cat.he.okerr.com verweist. Uns gefällt Hurricane einfach besser als dynamisches DNS und es verfügt über Schlüssel zum Verwalten eines einzelnen Eintrags (statt einer ganzen Zone). Wir denken, dass es sicherer ist. Sie müssen in okerr auch keine Schlüsselpasswörter angeben, um die gesamte Domain zu verwalten, sondern nur für eine Subdomain oder einen Datensatz.

Vom Fallen zum Steigen

Schritt für Schritt, wie dieses Schema funktioniert:

  1. Auf dem Server ist ein Problem aufgetreten (simuliert).
  2. Der okerr-Sensor überprüft den Status jedes Servers einmal pro Minute und meldet ihn an den Hauptprojektserver in okerr
  3. Die entsprechende Serveranzeige wechselt von OK auf ERR
  4. Wenn sich der Status des Indikators ändert, wird das Failover neu berechnet und es wird berechnet, welche Adresse (falls erforderlich) festgelegt werden muss. Wenn beispielsweise der Hauptserver funktioniert und gleichzeitig der Backup-Server ausgefallen ist, werden keine Änderungen vorgenommen gemacht)
  5. Diese Adresse wird dem dynamischen DNS-Dienst gemeldet. Nach Abschluss dieser Phase sehen Sie rechts den Status „synchronisiert“.
  6. Sehr bald (Sekunden) erreicht der Eintrag die DNS-Server Ihrer Domain (für die Cat-Site ist es ns1-ns5.he.net).
  7. Von diesem Moment an werden einige Benutzer bereits auf dem neuen Live-Server sein. Allerdings haben noch nicht alle DNS-Server auf der Welt die Einträge aktualisiert und der alte Eintrag ist möglicherweise noch irgendwo zwischengespeichert. Sie können sehen, wie die Daten auf öffentlichen DNS-Servern „tanzen“ und entweder einen neuen oder einen alten Wert anzeigen. Wenn Sie die Failover-Konfigurationsseite aktualisieren, fordert der Betreiber selbst neue Daten von den DNS-Servern an.
  8. Nachdem sich die Daten stabilisiert haben, ist der alte zwischengespeicherte Datensatz überall fehlerhaft – alle Anfragen gehen zu 100 % an den neuen Server.

Um Stufe 7 (oft die längste) zu beschleunigen, sollte die TTL des dynamischen DNS-Eintrags so niedrig wie möglich eingestellt werden. Normalerweise erlauben Dienste Intervalle von 90–120 Sekunden. Das ist ein völlig vernünftiger Kompromiss.

zusätzlich

All dies kann an einem Abend konfiguriert werden (wenn Sie bereits einen Backup-Server haben). Sowohl okerr als auch dynamische DNS-Dienste sind kostenlos. Um mehr Schecks in okerr und einen kürzeren Verifizierungszeitraum zu erhalten, müssen Sie eine Schulung absolvieren (auf Ihrer Profilseite). Nach Abschluss erhöht sich das Level sofort (20 Indikatoren pro Stunde + 1 schnelles, 10 Minuten). Und wenn es nur wenige davon gibt, schreiben Sie an [E-Mail geschützt] , höchstwahrscheinlich wird eine Steigerung möglich sein (bisher gab es immer eine Möglichkeit, ich habe nie abgelehnt, im Gegenteil, ich habe sie selbst angeboten). Es ist nur so, dass ich zunächst nicht jedem alles versprechen möchte, ich bin mir nicht sicher, ob ich die Kapazitäten habe, mein Wort zu halten. Da es jedoch bisher nur wenige Benutzer gibt, gibt es keine Probleme mit der Erhöhung der Limits.

Was okerr im Allgemeinen kann – schauen Sie sich die Website an Präsentation. Im Allgemeinen handelt es sich hierbei um Überwachung (Zabbix aus der Cloud), und der Filer ist eine nette Zusatzfunktion. Sie können die Demo auch ohne Registrierung von der Website aus aufrufen.

Wenn sich der Status des Indikators ändert, wird eine Benachrichtigung per E-Mail oder Telegramm gesendet. (Wir haben uns angeschaut, was passiert ist, und festgestellt, dass Telegram der zuverlässigste Messenger zu sein scheint. Vielen Dank an RKN für den Stresstest!) Wenn okerr richtig konfiguriert ist, ist jede Benachrichtigung entweder ein Signal „Lass alles fallen, wir müssen es reparieren!“ , oder „Licht aus!“ Es sollte keine zusätzlichen Warnungen von der Okerra geben (falls vorhanden, müssen diese irgendwie anders konfiguriert werden). Bei unserer Katzenseite ist beispielsweise der Alpha-Server der letzte und täuscht niemals einen Fehler vor. Wenn er sich hinlegt, müssen wir es wissen. Da andere Server jedoch ständig Fehler vortäuschen, haben diese Indikatoren einen „stillen“ Status, um nicht mehrmals pro Stunde Warnungen zu erhalten.

Es ist auch sinnvoll, einen Sorry-Server zu erstellen (auf jedem günstigsten Hosting), der entweder Ihre Entschuldigungsseite hat (für den Fall, dass alle Haupt- und Backup-Server ausgefallen sind) oder Sie auf die Statusseite auf okerr weiterleitet (z. B. unsere). cp.okerr.com/status/okerr) oder statuspage.io.

Source: habr.com

Kommentar hinzufügen