Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

Der legale Datenverkehr im DDoS-Guard-Netzwerk hat kĂŒrzlich die hundert Gigabit pro Sekunde ĂŒberschritten. Derzeit generieren 50 % unseres gesamten Datenverkehrs die Webdienste unserer Kunden. Das sind mehrere Zehntausend verschiedene Domains, die meistens individuelle Lösungen erfordern.

Im Folgenden erklĂ€ren wir, wie wir die Front-End-Knoten verwalten und ausgeben SSL-Zertifikate fĂŒr Hunderttausende von Websites.

Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

Die Konfiguration des Front-Ends fĂŒr eine einzige Website, selbst wenn sie sehr groß ist, ist einfach. Wir verwenden nginx oder haproxy oder lighttpd, konfigurieren es nach den Anleitungen und vergessen es. Wenn etwas geĂ€ndert werden muss, fĂŒhren wir einen Reload durch und vergessen es wieder.

Alles Ă€ndert sich, wenn Sie große Verkehrsvolumen in Echtzeit verarbeiten, die LegitimitĂ€t von Anfragen bewerten, Nutzerinhalte komprimieren und cachen und dabei die Einstellungen mehrmals pro Sekunde Ă€ndern. Der Nutzer möchte das Ergebnis auf allen externen Knoten sofort sehen, nachdem er die Einstellungen in seinem Dashboard geĂ€ndert hat. Außerdem kann der Nutzer ĂŒber die API mehrere Tausend (manchmal sogar Zehntausende) Domains mit individuellen Verkehrsanpassungen hochladen. All dies muss sofort sowohl in Amerika als auch in Europa und Asien funktionieren — eine nicht triviale Aufgabe, wenn man bedenkt, dass es allein in Moskau mehrere physisch verteilte Filterknoten gibt.

Warum viele große, zuverlĂ€ssige Knotenpunkte auf der ganzen Welt?

  • Die QualitĂ€t der Kundenverkehrsverarbeitung — Anfragen aus den USA mĂŒssen genau in den USA verarbeitet werden (einschließlich hinsichtlich Angriffe, Parsing und anderen Anomalien) und dĂŒrfen nicht nach Moskau oder Europa geleitet werden, wodurch die Verarbeitungsverzögerung unvorhersehbar erhöht wird.
  • Angreifender Traffic muss lokalisiert werden – Transitbetreiber können wĂ€hrend Angriffe, deren Umfang oft 1 Tbps ĂŒbersteigt, in Schwierigkeiten geraten. Angreifenden Traffic ĂŒber transatlantische oder transasiatische Verbindungen zu transportieren, ist keine gute Idee. Wir haben konkrete FĂ€lle erlebt, in denen Tier-1-Betreiber sagten: "Die Mengen an Angriffen, die Sie empfangen, sind fĂŒr uns gefĂ€hrlich." Aus diesem Grund nehmen wir eingehende Ströme so nah wie möglich an ihren Quellen entgegen.
  • Strenge Anforderungen an die KontinuitĂ€t des Dienstes – Rechenzentren dĂŒrfen weder voneinander noch von lokalen Ereignissen in unserer sich schnell verĂ€ndernden Welt abhĂ€ngig sein. Wurden alle 11 Etagen des MMTS-9 eine Woche lang stromlos gemacht? – Kein Problem. Kein Kunde, der nicht physisch an diesem Standort angeschlossen ist, wird betroffen sein, und Webdienste leiden unter keinen UmstĂ€nden.

Wie lÀsst sich das alles managen?

Die Konfigurationen der Dienste sollten so schnell wie möglich (idealerweise sofort) auf allen Front-End-Knoten verteilt werden. Es ist nicht ausreichend, die Textkonfigurationen einfach zu Ă€ndern und die Daemonen bei jeder Änderung neu zu starten – selbst nginx hĂ€lt die laufenden Prozesse (Worker shutting down) noch einige Minuten (und möglicherweise sogar Stunden, wenn dort lange WebSocket-Sitzungen aktiv sind).

Bei der Neulade der Konfiguration sieht das Bild in nginx meist so aus:

Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

Zur Speichernutzung:

Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

Alte Worker verbrauchen Speicher, der nicht linear von der Anzahl der Verbindungen abhĂ€ngt – das ist normal. Wenn die Clientverbindungen geschlossen werden, wird dieser Speicher freigegeben.

Warum war das kein Problem, als nginx gerade erst begann, sich zu entwickeln? Es gab weder HTTP/2 noch WebSocket und keine massiven langen Keep-Alive-Verbindungen. 70 % unseres Webverkehrs sind HTTP/2, was sehr lange Verbindungen bedeutet.

Die Lösung ist einfach – verwenden Sie nginx nicht, verwalten Sie die Frontends nicht auf Basis von Textdateien und lassen Sie auf keinen Fall komprimierte Textkonfigurationen ĂŒber transozeanische KanĂ€le laufen. Die KanĂ€le sind zwar garantiert und reserviert, aber das macht sie nicht weniger transkontinental.

Wir verfĂŒgen ĂŒber einen eigenen Front-Server-Balancer, dessen interne Funktionsweise ich in den kommenden Artikeln erlĂ€utern werde. Das Wichtigste ist, dass er in der Lage ist, Tausende von KonfigurationsĂ€nderungen pro Sekunde in Echtzeit anzuwenden, ohne NeuausfĂŒhrungen, Reloads, plötzliche SpeicherverbrĂ€uche und dergleichen. Das Ă€hnelt sehr dem Hot Code Reload, beispielsweise in Erlang. Die Daten werden in einer geo-verteilten Key-Value-Datenbank gespeichert und sofort von den ausfĂŒhrenden Mechanismen der Frontend-Server abgerufen. Das bedeutet, dass Sie ein SSL-Zertifikat ĂŒber die Web-OberflĂ€che oder API in Moskau hochgeladen haben, und nach ein paar Sekunden ist es bereits bereit fĂŒr den Einsatz in unserem Rechenzentrum in Los Angeles. Falls plötzlich ein Weltkrieg ausbricht und das Internet weltweit ausfĂ€llt, werden unsere Knoten weiterhin autonom arbeiten und das Split-Brain-Problem beheben, sobald einer der dedizierten KanĂ€le Moskau-Amsterdam-Los Angeles oder Moskau-Amsterdam-Hongkong-Los Angeles wieder verfĂŒgbar ist oder zumindest einer der Backup-Overlay-GRE-KanĂ€le.

Dasselbe System ermöglicht es uns, Zertifikate sofort auszustellen und zu verlĂ€ngern fĂŒr Let’s Encrypt. Sehr vereinfacht funktioniert das so:

  1. Sobald wir eine HTTPS-Anfrage fĂŒr die Domain eines unserer Kunden ohne Zertifikat (oder mit abgelaufenem Zertifikat) sehen, informiert der externe Knoten, der die Anfrage empfangen hat, das interne Zertifizierungszentrum.

    Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

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

    Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

  3. Nach wenigen Momenten erhalten wir das korrekte Zertifikat und den privaten SchlĂŒssel und verteilen es so an die Frontends. Wieder ohne Neustart der DĂ€monen.

    Web-HighLoad – wie wir den Traffic von Tausenden von DomĂ€nen verwalten

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

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

In den nĂ€chsten Artikeln dieser Serie werde ich ĂŒber weitere Aspekte der Echtzeitverarbeitung großer Web-Traffic-Mengen sprechen – zum Beispiel ĂŒber die Analyse von RTT anhand unvollstĂ€ndiger Daten zur Verbesserung der ServicequalitĂ€t fĂŒr Transitkunden und generell ĂŒber den Schutz des Transitverkehrs vor Terabit-Angriffen, ĂŒber die Lieferung und Aggregation von Traffic-Informationen, ĂŒber WAF, eine fast unbegrenzte CDN und viele Mechanismen zur Optimierung der Inhaltsausgabe.

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte melden Sie sich an.Sind Sie an Contour interessiert?

Was möchten Sie zuerst wissen?

  • 14,3%Algorithmen zur Clusterbildung und Analyse der Web-Traffic-QualitĂ€t<3
  • 33,3%Die Innereien der DDoS-Guard-Balancer7
  • 9,5%Schutz des L3/L4-Transitverkehrs2
  • 0,0%Schutz von Websites bei Transit-Traffic0
  • 14,3%Web Application Firewall3
  • 28,6%Schutz vor Parsing und Clickjacking6

21 Nutzer haben abgestimmt. 6 Nutzer haben sich enthalten.

Quelle: habr.com

Erwerben Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster