Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

Der legitime Verkehr im DDoS-Guard-Netz hat kĂŒrzlich die Hundert-Gigabit-Sekunden-Marke ĂŒberschritten. Aktuell erzeugen 50 % unseres gesamten Verkehrs Web-Dienste von Kunden. Das sind viele zehntausende Domains, sehr unterschiedlich und in den meisten FĂ€llen erforden sie einen individuellen Ansatz.

Unter dem Cut - wie wir die Front-Nodes verwalten und ausgeben SSL-Zertifikate fĂŒr Hunderttausende von Webseiten.

Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

Die Front fĂŒr eine einzige Webseite einzurichten, selbst fĂŒr eine sehr große, ist einfach. Wir nehmen nginx oder haproxy oder lighttpd, richten sie gemĂ€ĂŸ den Anleitungen ein und vergessen es. Wenn wir etwas Ă€ndern mĂŒssen, machen wir einen Reload und vergessen es wieder.

Alles Ă€ndert sich, wenn man in Echtzeit große Verkehrsvolumen bearbeitet, die LegitimitĂ€t von Anfragen bewertet, Nutzerinhalte komprimiert und cached und dabei die Parameter mehrmals pro Sekunde Ă€ndert. Der Nutzer möchte die Ergebnisse auf allen externen Nodes sehen, sobald er die Einstellungen in seinem Benutzerkonto geĂ€ndert hat. Außerdem kann der Nutzer ĂŒber die API mehrere Tausend (manchmal sogar Zehntausende) Domains mit individuellen Verkehrsbearbeitungsparametern hochladen. All dies muss ebenfalls sofort in Amerika, Europa und Asien funktionieren – eine nicht triviale Aufgabe, wenn man bedenkt, dass in Moskau mehrere physisch verteilte Filterknoten existieren.

Warum viele große zuverlĂ€ssige Knoten weltweit?

  • Die QualitĂ€t der Kundenverkehrsbereitstellung – Anfragen aus den USA mĂŒssen genau dort bearbeitet werden (auch hinsichtlich Angriffe, Parsing und andere Anomalien), und nicht nach Moskau oder Europa geschickt werden, was die Verarbeitungslatenz unvorhersehbar erhöht.
  • Angreifender Verkehr muss lokalisiert werden – Transitbetreiber können wĂ€hrend der Angriffe, deren Volumen oft 1 Tbps ĂŒberschreitet, degradieren. Es ist keine gute Idee, angreifenden Verkehr ĂŒber transatlantische oder transasiatische Verbindungen zu transportieren. Wir hatten echte FĂ€lle, bei denen Tier-1-Betreiber sagten: 'Die Angriffsvolumen, die Sie empfangen, sind fĂŒr uns gefĂ€hrlich.' Genau deshalb nehmen wir eingehende Ströme so nah wie möglich an deren Quellen auf.
  • Strenge Anforderungen an die ServicekontinuitĂ€t – die Reinigungseinheiten dĂŒrfen nicht voneinander oder von lokalen Ereignissen in unserer sich schnell verĂ€ndernden Welt abhĂ€ngig sein. Wenn fĂŒr eine Woche der Strom in allen 11 Etagen von MMTS-9 ausfĂ€llt? – kein Problem. Kein Kunde, der nicht physisch an diesem Standort angeschlossen ist, wird davon betroffen sein, und die Webdienste werden unter keinen UmstĂ€nden beeintrĂ€chtigt.

Wie verwaltet man das alles?

Die Konfigurationen der Dienste mĂŒssen so schnell wie möglich (idealerweise sofort) auf allen Front-End-Knoten verbreitet werden. Man kann nicht einfach die Textkonfigurationen Ă€ndern und die Dienste bei jeder Änderung neu starten – dasselbe gilt fĂŒr nginx, das laufende Prozesse (worker shutting down) noch mehrere Minuten (oder sogar Stunden, wenn es lange Websocket-Sitzungen gibt) hĂ€lt.

Beim Neustarten der nginx-Konfiguration sieht die folgende Situation durchaus normal aus:

Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

Zur Speichernutzung:

Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

Die alten Worker verbrauchen Speicher, der unter anderem nicht linear von der Anzahl der Verbindungen abhĂ€ngt – das ist normal. Wenn die clientseitigen Verbindungen geschlossen werden, wird dieser Speicher wieder freigegeben.

Warum war das kein Problem, als nginx gerade anfing, sich zu entwickeln? Es gab weder HTTP/2 noch WebSocket noch viele langfristige Keep-Alive-Verbindungen. 70 % unseres Webtraffics sind HTTP/2, und das sind sehr langanhaltende Verbindungen.

Die Lösung ist einfach – nginx nicht verwenden, Frontends nicht auf Basis von Textdateien verwalten und auf keinen Fall komprimierte Textkonfigurationen ĂŒber transozeanische KanĂ€le bombardieren. Die KanĂ€le sind zwar garantiert und reserviert, aber dennoch transkontinental.

Wir haben einen eigenen Front-Server-Balancer, ĂŒber dessen Innere ich in den folgenden Artikeln berichten werde. Das Wichtigste ist, dass er in der Lage ist, Tausende von KonfigurationsĂ€nderungen pro Sekunde in Echtzeit anzuwenden, ohne Neustarts, Reloads, sprunghaften Anstieg des Speicherverbrauchs und all das. Das ist sehr Ă€hnlich wie Hot Code Reload, zum Beispiel in Erlang. Die Daten werden in einer geo-distribuierten Key-Value-Datenbank gespeichert und sofort von den ausfĂŒhrenden Mechanismen der Front-End-Systeme abgerufen. D.h. Sie haben das SSL-Zertifikat ĂŒber die Web-OberflĂ€che oder API in Moskau hochgeladen, und nach ein paar Sekunden ist es bereits einsatzbereit in unserem Rechenzentrum in Los Angeles. Falls eines Tages ein Weltkrieg ausbricht und das Internet weltweit ausfĂ€llt, werden unsere Knoten weiterhin autonom arbeiten und das Split-Brain-Problema beheben, sobald einer der dedizierten KanĂ€le Los Angeles-Amsterdam-Moskau, Moskau-Amsterdam-Hongkong-Los Angeles oder zumindest einer der Reserve-Overlay-GRE verfĂŒgbar ist.

Dieser Mechanismus ermöglicht es uns auch, Zertifikate sofort auszustellen und zu verlĂ€ngern. Zertifikate von Let’s Encrypt. Sehr vereinfacht funktioniert das so:

  1. Sobald wir auch nur eine HTTPS-Anfrage fĂŒr die Domain unseres Kunden ohne Zertifikat (oder mit abgelaufenem Zertifikat) sehen, meldet der externe Knoten, der die Anfrage entgegengenommen hat, dies dem internen Zertifizierungszentrum.

    Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

  2. Wenn der Benutzer die Ausstellung von Let’s Encrypt nicht blockiert hat, erstellt das Zertifizierungszentrum ein CSR, erhĂ€lt ein BestĂ€tigungstoken von LE und sendet es ĂŒber einen verschlĂŒsselten Kanal an alle Frontend-Systeme. Jetzt kann jeder Knoten die Validierungsanfrage von LE bestĂ€tigen.

    Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

  3. Nach ein paar Momenten erhalten wir ein korrektes Zertifikat und einen privaten SchlĂŒssel und verteilen diese ebenfalls an die Frontend-Systeme. Wiederum ohne Neustart der Daemons.

    Web-HighLoad - wie wir den Verkehr von Zehntausenden von Domains steuern

  4. Sieben Tage vor dem Ablaufdatum wird das Verfahren zur Neuausstellung des Zertifikats eingeleitet.

Aktuell rotieren wir in Echtzeit 350.000 Zertifikate völlig transparent fĂŒr die Benutzer.

In den kommenden Artikeln der Reihe werde ich ĂŒber andere Eigenschaften der Echtzeitverarbeitung großer Web-Traffic-Mengen berichten — zum Beispiel ĂŒber die Analyse von RTT bei unvollstĂ€ndigen Daten zur Verbesserung der ServicequalitĂ€t fĂŒr Transitkunden und allgemein ĂŒber den Schutz von Transit-Traffic gegen Terabitt-Angriffe, ĂŒber die Lieferung und Aggregation von Informationen ĂŒber den Traffic, ĂŒber WAF, nahezu unbegrenzte CDN und viele Mechanismen zur Optimierung der Inhaltsauslieferung.

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte einloggen.

WorĂŒber möchten Sie zuerst Informationen erhalten?

  • 14,3%Cluster-Algorithmen und Analyse der QualitĂ€t des Web-Traffics<3
  • 33,3%Innere von DDoS-Guard-Balancern7
  • 9,5%Schutz des transitiven L3/L4-Traffics2
  • 0,0%Schutz von Webseiten im transitiven Traffic0
  • 14,3%Web Application Firewall3
  • 28,6%Schutz vor Parsing und Click Fraud6

21 Benutzer haben abgestimmt. 6 Benutzer haben sich enthalten.

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster