Heim >System-Tutorial >LINUX >So verwenden Sie die autoritative OctoDNS- und DNS-Split-Konfiguration

So verwenden Sie die autoritative OctoDNS- und DNS-Split-Konfiguration

王林
王林nach vorne
2024-01-02 20:30:05430Durchsuche
Einführung Der Aufbau eines robusten Systems erfordert ein Design, das auf Fehler ausgelegt ist. Als Site Reliability Engineers (SREs) bei GitHub sind wir stets bestrebt, durch Redundanz zur Minderung von Problemen beizutragen, und heute besprechen wir die jüngsten Arbeiten, die wir durchgeführt haben, um Sie bei der Suche nach unseren Servern über DNS zu unterstützen.

Große DNS-Anbieter verfügen über mehrere Redundanzstufen in ihren Diensten. Wenn ein Problem auftritt, das einen Ausfall verursacht, können Maßnahmen ergriffen werden, um die Auswirkungen abzumildern. Eine der besten Optionen besteht darin, den maßgeblichen Dienst Ihrer Region auf mehrere Dienstanbieter aufzuteilen. Die Aktivierung der geteilten Autorität ist so einfach wie die Konfiguration von zwei oder mehr Nameserversätzen für Ihre Zone bei Ihrem Domain-Registrar, und DNS-Anfragen werden auf die gesamte Liste aufgeteilt. Allerdings müssen Sie die Aufzeichnungen in diesen Bereichen über mehrere Anbieter hinweg synchronisieren, und je nach Situation kann die Einrichtung entweder komplex sein oder ein vollständig manueller Prozess sein.

$ dig NS github.com. @a.gtld-servers.net.
...
;; QUESTION SECTION:
;github.com. IN NS
;; AUTHORITY SECTION:
github.com. 172800 IN NS ns4.p16.dynect.net.
github.com. 172800 IN NS ns-520.awsdns-01.net.
github.com. 172800 IN NS ns1.p16.dynect.net.
github.com. 172800 IN NS ns3.p16.dynect.net.
github.com. 172800 IN NS ns-421.awsdns-52.com.
github.com. 172800 IN NS ns-1283.awsdns-32.org.
github.com. 172800 IN NS ns2.p16.dynect.net.
github.com. 172800 IN NS ns-1707.awsdns-21.co.uk.
...

Die obige Abfrage fragt den TLD-Nameserver nach den NS-Einträgen von github.com. Es gibt den Wert zurück, den wir im Domain-Registrar konfiguriert haben. In diesem Fall gibt es zwei DNS-Dienstanbieter mit jeweils vier Einträgen. Sollte einer der Anbieter ausfallen, besteht die Hoffnung, dass die anderen die Anfrage trotzdem bedienen können. Wir synchronisieren Datensätze überall und können sie sicher ändern, ohne sich Gedanken über veraltete Daten oder einen falschen Status machen zu müssen.

Der letzte Teil der vollständigen Konfiguration der geteilten Autorität besteht darin, alle Nameserver bei beiden DNS-Dienstanbietern als NS-Einträge der obersten Ebene zum Stammverzeichnis der Zone hinzuzufügen.

$ dig NS github.com. @ns1.p16.dynect.net.
...
;; QUESTION SECTION:
;github.com. IN NS
;; ANSWER SECTION:
github.com. 551 IN NS ns1.p16.dynect.net.
github.com. 551 IN NS ns2.p16.dynect.net.
github.com. 551 IN NS ns-520.awsdns-01.net.
github.com. 551 IN NS ns3.p16.dynect.net.
github.com. 551 IN NS ns-421.awsdns-52.com.
github.com. 551 IN NS ns4.p16.dynect.net.
github.com. 551 IN NS ns-1283.awsdns-32.org.
github.com. 551 IN NS ns-1707.awsdns-21.co.uk.

Bei GitHub haben wir Dutzende Bereiche und Tausende Datensätze, und die meisten dieser Bereiche sind nicht kritisch genug, um eine Redundanz zu erfordern, sodass wir uns nur mit einigen wenigen befassen müssen. Wir möchten eine Lösung haben, die diese Einträge über mehrere DNS-Dienstanbieter hinweg synchronisieren und allgemeiner alle DNS-Einträge intern und extern verwalten kann. Deshalb kündigen wir heute OctoDNS an.

Konfiguration

OctoDNS ermöglicht es uns, unseren DNS-Workflow neu zu erfinden. Unsere Regionen und Datensätze werden in Konfigurationsdateien im Git-Repository gespeichert. Verwenden Sie GitHub-Flows für Änderungen und stellen Sie sie wie eine Site mit Zweigen bereit. Wir können sogar eine „leere“ Bereitstellung durchführen, um eine Vorschau der Datensätze anzuzeigen, die bei der Änderung geändert werden. Konfigurationsdateien sind Yaml-Wörterbücher, eines pro Region, deren Schlüssel der obersten Ebene Datensatznamen und Schlüsselwerte TTL, Typ und typspezifische Daten sind. Wenn es beispielsweise in der Zonendatei github.com.yaml enthalten ist, erstellt die folgende Konfiguration einen A-Eintrag für octodns.github.com.

octodns:
type: A
values:
- 1.2.3.4
- 1.2.3.5

Der zweite Teil der Konfiguration ordnet die Quelle der Datensatzdaten dem DNS-Dienstanbieter zu. Der folgende Codeausschnitt weist OctoDNS an, die Zone github.com vom Konfigurationsanbieter zu laden und ihre Ergebnisse mit dyn und route53 zu synchronisieren.

zones:
github.com.:
sources:
- config
targets:
- dyn
- route53
Synchronisieren

Sobald unsere Konfiguration abgeschlossen ist, kann OctoDNS den aktuellen Status bewerten und einen Plan erstellen, der die Änderungen umreißt, die erforderlich sind, um den Zielstatus mit der Quelle abzugleichen. Im Beispiel unten ist octodns.github.com ein neuer Datensatz, daher besteht die erforderliche Aktion darin, Datensätze in beiden zu erstellen.

$ octodns-sync --config-file=./config/production.yaml
...
********************************************************************************
* github.com.
********************************************************************************
* route53 (Route53Provider)
* Create
* Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0
* dyn (DynProvider)
* Create
* Summary: Creates=1, Updates=0, Deletes=0, Existing Records=0
********************************************************************************
...

Standardmäßig befindet sich octodns-sync im Simulationslaufmodus, daher werden keine Maßnahmen ergriffen. Sobald wir die Änderungen überprüft haben und mit ihnen zufrieden sind, können wir das Flag „--doit“ hinzufügen und den Befehl erneut ausführen. OctoDNS setzt seinen Verarbeitungsablauf fort und nimmt dieses Mal die notwendigen Änderungen in Route53 und Dynect vor, um den neuen Datensatz zu erstellen.

$ octodns-sync --config-file=./config/production.yaml --doit
...

Zu diesem Zeitpunkt verfügen wir über die gleichen Datensätze bei beiden DNS-Dienstanbietern und können unsere DNS-Anfragen problemlos zwischen ihnen aufteilen, da wir wissen, dass sie genaue Ergebnisse liefern. Wenn wir den obigen OctoDNS-Befehl direkt ausführen, basiert unser interner Workflow auf Bereitstellungsskripten und Chatops. Weitere Informationen finden Sie im Abschnitt „Workflow“ der README-Datei.

Zusammenfassung

Wir glauben, dass die meisten Websites von der Aufteilung der Behörden profitieren könnten, und hoffentlich wurde mit OctoDNS die größte Hürde beseitigt. Auch wenn Sie nicht an einer Aufteilung der Autorität interessiert sind, ist OctoDNS dennoch einen Blick wert, da es die Vorteile von Infrastructure-as-Code in DNS integriert.

Möchten Sie dem GitHub SRE-Team bei der Lösung eines interessanten Problems helfen? Wir würden uns gerne anschließen. Hier bewerben.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die autoritative OctoDNS- und DNS-Split-Konfiguration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen