Testen von Jet9 - Ausfallsicheres Website-Hosting mit geografischer Optimierung

    Wir haben eine Plattform zum Ausführen von Jet9- Webanwendungen erstellt und führen derzeit öffentliche Betatests für Webhosting durch, das auf dieser Plattform basiert . Hier werden wir darüber sprechen, was es ist, welche Aufgaben es löst und wie alles organisiert ist.

    In den folgenden Artikeln erfahren Sie mehr über das Jet9-Gerät, über die technischen Lösungen für verschiedene Komponenten, über die aufgetretenen Probleme und darüber, wie Sie diese beheben oder umgehen können.

    Mit diesen Veröffentlichungen sollen Fachleute angezogen werden, um Fehlerberichte zu testen und zu erhalten, potenzielle Kunden über das Projekt zu informieren und Erfahrungen mit Kollegen auszutauschen. Wenn Materialien hier erscheinen, werden wir Materialien auf unserer Website hinzufügen.

    Was ist Jet9?


    Wir haben den Service „Fail-Safe Website Hosting mit geografischer Optimierung“ genannt. Trotz der Ausführlichkeit spiegelt dies einen kleineren Teil der Möglichkeiten wider, der aber am auffälligsten ist.

    Die Hauptmerkmale von Jet9: erhöhte Fehlertoleranz, integriertes CDN / ADN, garantierte Ressourcenzuteilung in einem weiten Bereich. All dies in einer vorgefertigten Lösung, ohne dass der Kunde das Zusammenspiel eines großen Stapels von Komponenten eigenständig organisieren und die Architektur des Standorts ändern muss. Auf diese Weise wird ein stabiler und schneller Betrieb vor Ort bei minimaler Ausfallzeit oder Arbeitsbeeinträchtigung sichergestellt. Die Lösung konzentriert sich auf Webprojekte, bei denen solche Anforderungen bereits aufgetreten sind, deren unabhängige Implementierung und Wartung jedoch zu schwierig oder zu teuer ist.

    Die private Installation der Plattform (Private Jet9) wurde für kleine und mittlere Projekte entwickelt, für deren Betrieb mehrere Server bis zu mehreren Hundert erforderlich sind. Das Webhosting (PaaS Jet9) bietet sowohl minimale Tarife für kleine Websites mit geringem Datenverkehr als auch hohe Tarife, die fast alle Ressourcen eines leistungsstarken Servers ausmachen, für anspruchsvolle Websites mit hoher Auslastung - bis zu mehreren hundert Anfragen pro Sekunde und Hunderttausenden von Benutzern pro Tag.

    Als Hardware für das Jet9-Webhosting werden Standardserver TrueVirtual V8 und TrueVirtual T4 mit Netzwerkspeicher und lokalem SSD-Cache verwendet.

    Während der Entwicklung wurden verschiedene Know-how- und zum Patent angemeldete Erfindungen verwendet. Die Hauptarbeit besteht jedoch aus einem großen Forschungsaufwand, sorgfältiger Ingenieurarbeit zum Verbinden vieler Komponenten und ihrer Fertigstellung, Programmieren der fehlenden Knoten sowie langem Testen des Verhaltens in verschiedenen Kombinationen von Bedingungen, um alles zu dokumentieren alle Stadien und Ausarbeitung von Vorschriften für reguläre und Notfallverfahren.

    So funktioniert Jet9


    Webumgebung

    Bild
    Bedienfelder und Web-Stacks

    Als Benutzeroberfläche können Sie Control Panels verwenden, die für das gemeinsame Webhosting konzipiert sind. Jetzt wird die Systemsteuerung von ISPManager 5 verwendet, für die automatische Bereitstellung stehen SSH, SFTP und FTPS zur Verfügung.

    Die Webumgebung entspricht derzeit dem allgemein akzeptierten LAMP-Set: Linux, Apache, MySQL, PHP. Zusätzlich zu normalen CGIs können Sie FastCGI-Anwendungen (Perl, Python) ausführen. Das heißt, alles, was auf einem herkömmlichen Webhosting verfügbar ist. Private Jet9 kann Unicorn-, Thin- und Puma-Anwendungsserver für Ruby on Rails, Tomcat und Jetty für Java / JavaEE-, Python Python WSGI-Anwendungen, PostgreSQL-, MongoDB- und CouchDB-Datenbanken verwenden. Beim Webhosting zum gegenwärtigen Zeitpunkt sind diese Stacks jedoch nicht verfügbar, sondern nur LAMP.

    Ressourcenabrechnung und Lasttrennung

    Es war einmal eine Zeit, in der wir Ressourcen abgerechnet und Hosting-Clients unter FreeBSD 4.1 isoliert haben. Ich musste dem Kernel, Apache und einigen Systemdienstprogrammen viele Patches hinzufügen. Darüber könnte viel geschrieben werden. Und jetzt stellt sich kurz heraus: cgroup zu verschiedenen Speicherklassen, zum Prozessor, zu Plattenoperationen; Prozesse einschränken und Dateien öffnen. Jeder Benutzer verfügt über eine eigene Instanz von Apache, wodurch die Organisation der Benutzerrechte für den Webserver und die Skripte vereinfacht und die Steuerung des Ressourcenverbrauchs vereinfacht wird.

    Kernel-Tweaks sind nur für eine flexiblere Steuerung der Zugriffsrechte und eine zusätzliche Isolierung der Benutzer erforderlich und werden nur für das Jet9-Webhosting verwendet.

    Einige Fehler aus der idealen Lastverteilung durch cgroups werden durch die obligatorische Überweisung von mindestens 10% aller Ressourcen in die allgemeine Reserve ausgeglichen, wodurch jeder Benutzer mit 10% Überlastung über Tarifgrenzen versorgt wird.

    Backups

    Backups werden in einem unabhängigen Langzeitarchivierungssystem gespeichert, das sich im dritten geografisch entfernten Rechenzentrum befindet. Inkrementelle Sicherungen werden jeden Tag durchgeführt. Kopien des Dateisystems über rsync werden verwendet. Blockgeräte-Snapshots werden nicht verwendet, da bei Beschädigung der Metadaten des Dateisystems sowohl das Replikat im Cluster als auch die Sicherungskopie beschädigt werden.

    Archive werden nach einem Mehrzyklusschema gedreht, bei dem sichergestellt wird, dass alte Kopien so ausgedünnt werden, dass alte Kopien in einer kleineren Anzahl und neue Kopien in einer größeren Anzahl gespeichert werden. Das heißt, wenn sieben Archive gespeichert werden, enthält es Kopien mit ungefähr folgendem Alter: 1 Jahr, 6 Monate, 3 Monate, 1 Monat, 6 Tage, 2 Tage, 1 Tag.

    Failover-Cluster

    BildJedes Web-Backend wird über dem HA-Cluster mit repliziertem Speicher ausgeführt. In zwei unabhängigen Rechenzentren gibt es zwei Seiten des Clusters - den Master und das Backup. Zu einem bestimmten Zeitpunkt kann nur eine der Parteien arbeiten - entweder ein Master oder ein Backup. Als Richtlinie für die Arbeit der Cluster-Parteien für das Webhosting wird ein Verbot der Aufteilung des Gehirns eingeführt - eine Situation, in der sowohl der Master als auch das Backup gleichzeitig arbeiten. Diese Richtlinie ist eine Konsequenz der akzeptierten Anforderung, eine konsistente Konsistenz sicherzustellen. Bei privaten Installationen können andere Richtlinien verwendet werden, die eine Aufteilung des Gehirns ermöglichen, um eine maximale Dienstverfügbarkeit sicherzustellen, auch wenn die Daten inkonsistent sind.

    Auf jeder Seite des Clusters befindet sich ein eigenes Repository, mit dem alle Arbeiten ausgeführt werden und dessen Änderungen in Echtzeit in ein anderes Rechenzentrum und in eine andere Verfügbarkeitszone repliziert werden - vom Master bis zum Backup. Für uns ist dies eine bequemere Option als die Alternative - ein gemeinsames Repository, das in beiden Rechenzentren verteilt ist. Das Organisieren eines Clusters in einem replizierten Speicher ist im Allgemeinen viel komplizierter als in einem gemeinsam genutzten Speicher, bietet jedoch einen erheblichen Vorteil - geringere Latenzanforderungen für die Kommunikation zwischen Rechenzentren, deutlich geringere Bandbreitenanforderungen und infolgedessen die Möglichkeit, effizientere Systeme aufzubauen. Jetzt nutzen wir drei Rechenzentren, von denen zwei über eine direkte Verbindung verfügen und beide über das Internet mit dem dritten verbunden sind. HA-Cluster werden sowohl bei über eine direkte Verbindung verbundenen Master-Backup-Paaren als auch bei Paaren verwendet

    Als wir anfingen, Herzschrittmacher für interne Dienste zu verwenden, wurde dafür der Herzschlag verwendet, und wir führten unabhängig voneinander zusätzliche Schiedsverfahren zum Schutz vor Split-Brain ein. In Jet9 haben wir mit Quorum auf Schrittmacher und Corosync umgestellt. Pacemaker ist ein gutes leistungsstarkes Produkt, weist jedoch viele Unannehmlichkeiten und Funktionen auf, die die Verwendung in einer großen Anzahl von Clustern und in unzuverlässigen oder komplexen Netzwerken erschweren. Aus diesem Grund haben wir einen eigenen Cluster-Controller entwickelt, der besser auf die Lösung unserer Probleme vorbereitet ist. Jetzt läuft es zu wenig und für die Produktion verwenden wir weiterhin Schrittmacher.

    Der Master und das Backup verwenden unterschiedliche IP-Adressen aus unterschiedlichen Routing-Netzwerken, sodass ein Routing-Fehler nicht zur Nichtverfügbarkeit von Master und Backup führt. Dies ist eine zuverlässigere Alternative als eine migrierende IP-Adresse, da im letzteren Fall eine konsistente Struktur von zwei Fehlerpunkten erhalten wird - externes Routing (BGP) und internes (OSPF).

    Beim Jet9-Webhosting verwendet der lokale Speicher eine schnelle SSD + bcache mit Rückschreibfunktion für das Caching.

    Geografische Optimierung

    BildAlle Websites werden über ein Netzwerk von Webbeschleunigern bereitgestellt - ein geografisch verteiltes Netzwerk von Caching-Webservern, die Inhalte von Websites mit maximaler Geschwindigkeit bereitstellen und zur erneuten Verteilung zwischenspeichern. Anfragen an die Site werden über den Web Accelerator bearbeitet, der dem Besucher am nächsten ist, sodass alle Seiten viel schneller geöffnet werden.

    Im Gegensatz zu CDN für statische Dateien, die zum Hochladen von Dateien eine Verfeinerung der Site-Skripts erfordern, funktioniert CDN Jet9 transparent und ohne Änderungen mit Websites und empfängt und verteilt den gesamten Inhalt selbst. Das Verbinden von CDNs und Webbeschleunigern mit dem HA-Cluster erfolgt automatisch beim Erstellen der Site und erfordert keine DNS- oder Site-Einstellungen.

    Ein zusätzlicher Vorteil gegenüber ausländischen Diensten ist die normale Abdeckung in Russland. Das heißt, der Spiegel, der Tyumen am nächsten ist, befindet sich nicht in Holland, sondern in Jekaterinburg. Für eine Testinstallation von Jet9 wird ein kleines Netzwerk verwendet - Großbritannien, Moskau, St. Petersburg und Nowosibirsk. In der Produktion kommen Rostow am Don, Samara, Jekaterinburg und Holland hinzu. Bisher gibt das Thema Fernost nur mangelhaft nach - ein großes Ungleichgewicht bei den Kommunikations- und Bevölkerungskosten ist wirtschaftlich nicht gerechtfertigt, aber wir werden weitermachen.

    Für den geografischen Ausgleich wird ein Hybridschema verwendet - DNS-Anycast sowie die Berechnung von Geschwindigkeit und Entfernung auf DNS-Servern. Squid wird als Reverse-Proxy und zusätzlich zu SSL auch Nginx verwendet.

    Testen


    Das Hauptziel dieser Tests für uns ist es, Probleme in der API für die Verwaltung von Domänen auf Frontends und Backends zu finden, ISPManager in unsere Webumgebung auf Backends zu integrieren und ISPManager mit Webbeschleunigern und Geo-Balancing auf Frontends zu integrieren. Geplante Testdauer: 1 - 2 Monate.

    Wir erwarten keine neuen Mängel in der Arbeit von HA-Clustern und Web-Beschleunigern, da wir sie seit geraumer Zeit in der Produktion einsetzen. Die Unterstützung für Website-Kontrollfelder, Front-End- und Back-End-Domain-Management-APIs sowie eine Reihe von Front-End-Back-Ends wurde jedoch erst in diesem Frühjahr bereitgestellt. Daher können mit erheblicher Wahrscheinlichkeit Probleme auftreten, die wir selbst nicht identifiziert haben.

    Während des Testprozesses werden wir regelmäßig nach vorheriger Ankündigung Ausfälle in verschiedenen Bereichen veranlassen, um den ordnungsgemäßen Betrieb der Automatisierung auf diese Ausfälle zu überprüfen und festzustellen, wie sich dies auf die Funktionsweise der Standorte auswirken kann.

    Testteilnehmer erhalten über einen Zeitraum von 2 Jahren einen zusätzlichen Rabatt von 10% für alle Jet9-Produkte - sowohl für Webhosting als auch für Lizenzen für private Installationen.

    Um an dem Test teilzunehmen, genügt es, eine Bestellung auf jet9.ru mit der erforderlichen Menge an Ressourcen und Ihren Daten zu registrieren . Es ist nicht erforderlich, separat über das Testen zu schreiben, jetzt werden alle Anwendungen automatisch als Testanwendungen ausgegeben.

    Neben dem direkten Testen ist es auch sehr interessant, knifflige technische Fragen zu bekommen. Wenn es eine Frage gibt, auf die wir die Antwort nicht kennen, kann ein Fehler unter dieser Frage verborgen sein. In den folgenden Artikeln, in denen wir uns ausführlicher mit den einzelnen Komponenten befassen, werden die hier gestellten Fragen ebenfalls mit Antworten versehen.

    Jetzt auch beliebt: