Erreichen

Grow

Manage

Automate

Erreichen

Grow

Manage

Automate

Der Tag, an dem unser DNS eine undocumented Grenze in AWS erreichte

Ingenieurwissenschaft

1 min read

Der Tag, an dem unser DNS eine undocumented Grenze in AWS erreichte

Ingenieurwissenschaft

1 min read

Der Tag, an dem unser DNS eine undocumented Grenze in AWS erreichte

Wir sind auf nicht dokumentierte praktische Grenzen der EC2-Instanzen gestoßen, die wir für unseren primären DNS-Cluster verwendet haben. Die Dimensionierung von Cloud-Instanzen basierend auf traditionellen Spezifikationen (Prozessor, Speicher usw.) funktioniert normalerweise wie erwartet, aber manchmal trifft dieses traditionelle Hardware-Modell nicht zu.




Wie Wir Ungewöhnliche DNS-Ausfälle in AWS Aufspürten

Wir haben SparkPost um die Idee herum aufgebaut, dass ein Cloud-Dienst wie unserer selbst cloud-native sein muss. Das ist nicht nur Angeberei. Es ist unsere Cloud-Architektur, die die Skalierbarkeit, Elastizität und Zuverlässigkeit untermauert, die wesentliche Aspekte des SparkPost-Dienstes sind. Diese Qualitäten sind die Hauptgründe, warum wir unsere Infrastruktur auf Amazon Web Services (AWS) aufgebaut haben – und weshalb wir unseren Kunden Service-Level- und Burst-Rate-Garantien bieten können, die von niemand anderem im Geschäft übertroffen werden.

Aber wir tun nicht so, als würden wir nie von unerwarteten Bugs oder den Grenzen der verfügbaren Technologie herausgefordert. Letzten Freitag sind wir auf etwas derartiges gestoßen, und dieser Vorfall führte zu gelegentlicher Langsamkeit in unserem Dienst und zu Lieferverzögerungen für einige unserer Kunden.

Zuerst möchte ich sagen, dass das Problem am selben Tag gelöst wurde. Darüber hinaus gingen keine E-Mails oder zugehörigen Daten verloren. Wenn jedoch die Zustellung Ihrer E-Mails aufgrund dieses Problems verlangsamt wurde, bitte ich Sie um Entschuldigung (tatsächlich eine Entschuldigung von unserem gesamten Team). Wir wissen, dass Sie auf uns zählen, und es ist frustrierend, wenn wir nicht auf dem Niveau arbeiten, das Sie erwarten.

Einige Unternehmen sind versucht, Probleme wie eine Dienstbeeinträchtigung unter den Teppich zu kehren und zu hoffen, dass es niemand bemerkt. Sie haben das möglicherweise bei Diensten erlebt, die Sie in der Vergangenheit genutzt haben. Ich weiß, dass ich das habe. Aber so machen wir das Geschäft nicht gerne.

Ich wollte aus einem weiteren Grund über diesen Vorfall schreiben: Wir haben etwas wirklich Interessantes und Wertvolles über unsere AWS-Cloud-Architektur gelernt. Teams, die andere Cloud-Dienste aufbauen, könnten daran interessiert sein, davon zu lernen.

TL;DR

Wir stießen auf nicht dokumentierte praktische Grenzen der EC2-Instanzen, die wir für unseren primären DNS-Cluster verwendeten. Die Dimensionierung von Cloud-Instanzen basierend auf traditionellen Spezifikationen (Prozessor, Speicher usw.) funktioniert normalerweise wie erwartet, aber manchmal gilt dieses traditionelle Hardwaremodell nicht. Das ist besonders in untypischen Anwendungsfällen der Fall, bei denen aggregierte Grenzen ins Spiel kommen können – und es gibt Zeiten, in denen Sie unvorbereitet auf solche Szenarien stoßen.

Wir stießen am Freitag auf eine solche Grenze, als unser DNS-Abfragevolumen ein Netzwerkbenutzungsmuster erzeugte, für das unser Instanztyp nicht vorbereitet war. Da diese Grenze jedoch nicht aus den Dokumenten oder den verfügbaren Standardmetriken ersichtlich war, wussten wir nicht, dass wir sie erreicht hatten. Wir beobachteten eine sehr hohe Rate von DNS-Fehlern, die wiederum zu intermittierenden Verzögerungen an verschiedenen Punkten unserer Architektur führten.

Wir stießen auf nicht dokumentierte praktische Grenzen der EC2-Instanzen, die wir für unseren primären DNS-Cluster verwendeten. Die Dimensionierung von Cloud-Instanzen basierend auf traditionellen Spezifikationen (Prozessor, Speicher usw.) funktioniert normalerweise wie erwartet, aber manchmal gilt dieses traditionelle Hardwaremodell nicht. Das ist besonders in untypischen Anwendungsfällen der Fall, bei denen aggregierte Grenzen ins Spiel kommen können – und es gibt Zeiten, in denen Sie unvorbereitet auf solche Szenarien stoßen.

Wir stießen am Freitag auf eine solche Grenze, als unser DNS-Abfragevolumen ein Netzwerkbenutzungsmuster erzeugte, für das unser Instanztyp nicht vorbereitet war. Da diese Grenze jedoch nicht aus den Dokumenten oder den verfügbaren Standardmetriken ersichtlich war, wussten wir nicht, dass wir sie erreicht hatten. Wir beobachteten eine sehr hohe Rate von DNS-Fehlern, die wiederum zu intermittierenden Verzögerungen an verschiedenen Punkten unserer Architektur führten.

Wir stießen auf nicht dokumentierte praktische Grenzen der EC2-Instanzen, die wir für unseren primären DNS-Cluster verwendeten. Die Dimensionierung von Cloud-Instanzen basierend auf traditionellen Spezifikationen (Prozessor, Speicher usw.) funktioniert normalerweise wie erwartet, aber manchmal gilt dieses traditionelle Hardwaremodell nicht. Das ist besonders in untypischen Anwendungsfällen der Fall, bei denen aggregierte Grenzen ins Spiel kommen können – und es gibt Zeiten, in denen Sie unvorbereitet auf solche Szenarien stoßen.

Wir stießen am Freitag auf eine solche Grenze, als unser DNS-Abfragevolumen ein Netzwerkbenutzungsmuster erzeugte, für das unser Instanztyp nicht vorbereitet war. Da diese Grenze jedoch nicht aus den Dokumenten oder den verfügbaren Standardmetriken ersichtlich war, wussten wir nicht, dass wir sie erreicht hatten. Wir beobachteten eine sehr hohe Rate von DNS-Fehlern, die wiederum zu intermittierenden Verzögerungen an verschiedenen Punkten unserer Architektur führten.

Tiefer in DNS eintauchen

Warum ist unser DNS-Einsatz besonders? Nun, es hat viel mit der Funktionsweise von E-Mail zu tun, im Vergleich zum Inhaltsmodell, für das AWS ursprünglich entwickelt wurde. Die webbasierte Inhaltsbereitstellung nutzt stark die klassischen eingehenden „Pull“-Szenarien: Ein Client fordert Daten an, sei es HTML, Videostreams oder etwas anderes, aus der Cloud. Aber die Anwendungsfälle für Messaging-Dienstleister wie SparkPost sind Ausnahmen zum üblichen AWS-Szenario. In unserem Fall senden wir viel ausgehenden Traffic: speziell E-Mails (und andere Nachrichtentypen wie SMS oder mobile Push-Benachrichtigungen). Und dieser Push-Traffic stützt sich stark auf DNS.

Wenn Sie mit DNS vertraut sind, wissen Sie vielleicht, dass es im Allgemeinen relativ leichte Daten sind. Um eine HTML-Seite anzufordern, muss man zuerst fragen, wo diese Seite im Internet zu finden ist, aber diese Anfrage ist ein Bruchteil der Größe des Inhalts, den man abruft.

E-Mail hingegen macht ungewöhnlich starken Gebrauch von DNS, um Zustelldomains aufzuspüren — zum Beispiel sendet SparkPost jeden Monat viele Milliarden E-Mails an über 1 Million einzigartige Domains . Für jede E-Mail, die wir zustellen, müssen wir mindestens zwei DNS-Abfragen durchführen, und die Verwendung von DNS-„txt“-Einträgen für Anti-Phishing-Technologien wie SPF und DKIM bedeutet, dass DNS auch erforderlich ist, um E-Mails zu empfangen. Fügen Sie dazu unsere traditionellere Nutzung der AWS-API-Dienste für unsere Apps hinzu, und es ist schwer zu übertreiben, wie wichtig DNS für unsere Infrastruktur ist.

All dies bedeutet, dass wir auf eine ungewöhnliche Bedingung gestoßen sind, in der unser wachsendes Volumen an ausgehenden Nachrichten ein DNS-Verkehrsvolumen erzeugte, das ein aggregiertes Netzwerkdurchsatzlimit bei Instanztypen erreichte, die sonst ausreichende Ressourcen zu haben schienen, um diese Last zu bewältigen. Und wie Denial-of-Service-Angriffe auf die Dyn-DNS-Infrastruktur im letzten Jahr zeigten, wenn DNS ausfällt, fällt alles aus. (Das ist etwas, was jeder, der Systeme baut, die auf DNS angewiesen sind, schmerzlich gut kennt.)

Die plötzlichen DNS-Probleme lösten eine Reaktion unserer Operations- und Zuverlässigkeitsingenieur-Teams aus, um das Problem zu identifizieren. Sie arbeiteten mit unseren Partnern bei Amazon zusammen, um die Eskalation auf der AWS-Betriebsseite zu unterstützen. Gemeinsam identifizierten wir die Ursache und eine Lösung. Wir setzten einen Cluster größerer Kapazitäts-Nameserver mit einem stärkeren Fokus auf Netzwerk-Kapazität ein, der unsere DNS-Bedürfnisse erfüllen konnte, ohne die Durchsatzobergrenzen zu erreichen. Glücklicherweise konnten wir, da sich all dies innerhalb von AWS abspielte, die neuen Instanzen schnell hochfahren und sogar vorhandene Instanzen sehr schnell umstellen. DNS kehrte zum normalen Verhalten zurück, Abfragefehler hörten auf, und wir (und die Zustellung ausgehender Nachrichten) waren wieder auf Kurs.

Um dieses spezifische Problem in Zukunft zu mildern, nehmen wir auch Änderungen an der DNS-Architektur vor, um unsere Kernkomponenten besser von den Auswirkungen ähnlicher, unerwarteter Schwellenwerte abzuschirmen. Wir arbeiten auch mit dem Amazon-Team zusammen, um geeignete Überwachungsmodelle zu ermitteln, die uns ausreichende Warnungen geben, um ein ähnliches Ereignis zu verhindern, bevor es eines unserer Kunden betrifft.

AWS und die Silberstreifen der Cloud

Ich möchte den Einfluss dieses Vorfalls auf unsere Kunden nicht beschönigen. Aber unsere Fähigkeit, das zugrunde liegende Problem als eine unerwartete Interaktion unseres Anwendungsfalls mit der AWS-Infrastruktur zu identifizieren – und dann schnell eine Lösung zu finden –, hat viel damit zu tun, wie wir SparkPost aufgebaut haben und mit unserer großartigen Beziehung zum Amazon-Team.

SparkPosts hervorragendes Betriebsteam, unser Site Reliability Engineering (SRE)-Team und unsere leitenden technischen Architekten arbeiten jeden Tag mit Amazon. Die Stärken der AWS-Infrastruktur haben uns einen echten Vorteil verschafft beim Optimieren der SparkPost-Architektur für die Cloud. Die enge Zusammenarbeit mit AWS in den letzten zwei Jahren hat uns auch viel darüber beigebracht, wie man die AWS-Infrastruktur schnell hochfährt und umsetzt, und wir profitieren auch von der umfassenden Unterstützung des AWS-Teams.

Wenn wir eine ähnliche Einschränkung in einem traditionellen Rechenzentrumsmodell umgehen müssten, könnte so etwas Tage oder sogar Wochen dauern, um vollständig gelöst zu werden. Diese Agilität und Reaktionsfähigkeit sind nur zwei der Gründe, warum wir unser Geschäft auf die Cloud und AWS aufgebaut haben. Gemeinsam ist die Art von Cloud-Expertise, die unsere Unternehmen teilen, schwer zu finden. Amazon war ein großartiger Geschäftspartner für uns, und wir sind wirklich stolz darauf, was wir mit dem AWS-Stack erreicht haben.

SparkPost ist der erste E-Mail-Zustellservice, der von Anfang an für die Cloud entwickelt wurde. Wir senden mehr E-Mail von einer echten Cloud-Plattform als jeder andere, und manchmal bedeutet das, unbekanntes Terrain zu betreten. Es ist eine grundlegende Wahrheit der Informatik, dass man nicht weiß, welche Herausforderungen in großem Maßstab auftreten, bis man sie erreicht. Wir haben eines auf AWS gefunden, aber unsere schnelle Reaktion ist ein großartiges Beispiel für die Flexibilität, die die Cloud ermöglicht. Es ist auch unser Engagement für unsere Kunden.

Unabhängig davon, ob Sie Ihre eigene Infrastruktur auf AWS aufbauen oder ein SparkPost-Kunde sind, der unsere nutzt, hoffe ich, dass diese Erklärung dessen, was letzten Freitag passiert ist und wie wir es gelöst haben, nützlich war.

Abonnieren Sie unseren Newsletter.

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Abonnieren Sie unseren Newsletter.

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Abonnieren Sie unseren Newsletter.

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Pinterest-Logo
Uber-Logo
Square-Logo
Adobe-Logo
Meta-Logo
PayPal-Logo

Unternehmen

Datenschutzeinstellungen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Uber-Logo
Square-Logo
Adobe-Logo
Meta-Logo

Unternehmen

Datenschutzeinstellungen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Uber-Logo
Adobe-Logo
Meta-Logo

Erreichen

Grow

Manage

Automate

Ressourcen

Unternehmen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.