Netzwerkautomatisierung. Fall des Lebens

Hallo Habr!

In diesem Artikel möchten wir über die Automatisierung der Netzwerkinfrastruktur sprechen. Es wird ein funktionierendes Netzwerkdiagramm vorgestellt, das in einem kleinen, aber sehr stolzen Unternehmen arbeitet. Alle Übereinstimmungen mit realer Netzwerkhardware sind zufällig. Wir werden einen Fall betrachten, der in diesem Netzwerk aufgetreten ist und zu einer langen Betriebsschließung und schwerwiegenden finanziellen Verlusten führen kann. Die Lösung dieses Falls passt sehr gut zum Konzept der "Automatisierung der Netzwerkinfrastruktur". Mit Hilfe von Automatisierungstools zeigen wir, wie Sie komplexe Probleme in kurzer Zeit effektiv lösen können, und reflektieren das Thema, warum diese Aufgaben vielversprechender sind, auf diese Weise und nicht anders (über die Konsole) gelöst zu werden .

Haftungsausschluss

Unsere wichtigsten Automatisierungstools sind Ansible (als Mittel zur Automatisierung) und Git (als Aufbewahrungsort für Ansibles Playbooks). Ich möchte sofort reservieren, dass dies kein Informationsartikel ist, in dem wir über die Logik von Ansible oder Git sprechen und grundlegende Dinge erklären (z. B. Rollen \ Aufgaben \ Module \ Inventardateien \ Variablen in Ansible oder was passiert, wenn Sie Git-Push-Befehle eingeben oder git commit). In dieser Geschichte geht es nicht darum, wie Sie in Ansible üben und es auf NTP- oder SMTP-Geräten konfigurieren können. Dies ist eine Geschichte darüber, wie Sie ein Netzwerkproblem schnell und vorzugsweise fehlerfrei lösen können. Es ist auch wünschenswert, eine gute Vorstellung davon zu haben, wie das Netzwerk funktioniert, insbesondere was der TCP / IP-, OSPF-, BGP-Protokollstapel ist. Die Wahl von Ansible und Git kommt ebenfalls nicht in Frage. Wenn Sie immer noch die Wahl einer bestimmten Lösung haben,Wir empfehlen dringend, das Buch Netzwerkprogrammierbarkeit und -automatisierung zu lesen. Fähigkeiten für den Netzwerkingenieur der nächsten Generation “von Jason Edelman, Scott S. Lowe und Matt Oswalt.


Nun zum Punkt.

Formulierung des Problems


Stellen Sie sich eine Situation vor: 3 Uhr morgens schlafen Sie tief und fest und träumen. Der Anruf zum Telefon. Der technische Direktor ruft an:

- Ja?
- ###, ####, #####, die Ansammlung von Firewalls ist gefallen und steigt nicht an !!!
Sie reiben sich die Augen, versuchen zu erkennen, was passiert, und stellen sich vor, wie so etwas hätte passieren können. In der Röhre hört man die Haare auf dem Kopf des Regisseurs reißen und er bittet um Rückruf, weil der General ihn in der zweiten Zeile anruft.

Nach einer halben Stunde sammelten Sie die ersten einleitenden Notizen aus der Dienstschicht und weckten alle, mit denen Sie aufwachen konnten. Infolgedessen hat der technische Direktor nicht gelogen, alles ist so, die Hauptgruppe der Firewalls ist gefallen, und keine grundlegenden Gesten bringen ihn zur Besinnung. Alle Dienstleistungen, die das Unternehmen anbietet, funktionieren nicht.

Wählen Sie ein Problem für Ihren Geschmack, jeder wird sich an etwas anderes erinnern. Zum Beispiel funktionierte nach einem Update über Nacht ohne schwere Last alles gut und alle zufriedenen gingen ins Bett. Der Datenverkehr ging verloren und die Schnittstellenpuffer begannen aufgrund eines Fehlers im Netzwerkkartentreiber überzulaufen.

Die Situation kann Jackie Chan gut beschreiben.



Danke, Jackie.

Die Situation ist nicht sehr angenehm, oder?

Lass uns mit seinen traurigen Gedanken für die Zeit unseres Netzwerks gehen.

Wir werden diskutieren, wie sich die Ereignisse weiterentwickeln werden.

Wir bieten die folgende Reihenfolge der Präsentation des Materials an

  1. Betrachten Sie das Netzwerkdiagramm und analysieren Sie, wie es funktioniert.
  2. Wir werden beschreiben, wie wir Einstellungen mit Ansible von einem Router auf einen anderen übertragen.
  3. Lassen Sie uns über die Automatisierung der IT-Infrastruktur im Allgemeinen sprechen.

Netzwerkdiagramm und seine Beschreibung


Planen





Betrachten Sie die Logik unserer Organisation. Wir werden keine spezifischen Hersteller von Geräten nennen, dies spielt im Artikel keine Rolle (Der aufmerksame Leser selbst wird erraten, welche Art von Geräten verwendet wird) . Dies ist nur einer der guten Vorteile der Zusammenarbeit mit Ansible. Bei der Einrichtung ist es uns im Allgemeinen egal, um welche Art von Ausrüstung es sich handelt. Nur um zu verstehen, ist dieses Gerät ein bekannter Anbieter wie Cisco, Juniper, Check Point, Fortinet, Palo Alto ... Sie können Ihre eigene Version ersetzen.

Wir haben zwei Hauptaufgaben für den Verkehr:

  1. Gewährleistung der Veröffentlichung unserer Dienstleistungen, die das Geschäft des Unternehmens sind;
  2. Bereitstellung der Kommunikation mit Niederlassungen, einem Remote-Rechenzentrum und Organisationen von Drittanbietern (Partner und Kunden) sowie Zugriff auf das Internet über die Zentrale.

Beginnen wir mit den Grundelementen:

  1. Zwei Grenzrouter (BRD-01, BRD-02);
  2. Firewall-Cluster (FW-CLUSTER);
  3. Kernel Switch (L3-CORE);
  4. Ein Router, der zu einer Lebensader wird (bei der Lösung des Problems werden die Netzwerkeinstellungen von FW-CLUSTER auf NOTFALL übertragen) (NOTFALL);
  5. Switches zur Verwaltung der Netzwerkinfrastruktur (L2-MGMT);
  6. Virtuelle Maschine mit Git und Ansible (VM-AUTOMATION);
  7. Ein Laptop, der Playbooks für Ansible (Laptop-Automation) testet und entwickelt.

Im Netzwerk wird ein dynamisches OSPF-Routing-Protokoll mit den folgenden Bereichen konfiguriert:

  • Bereich 0 - der Bereich, in dem die für die Verkehrsbewegung in der EXCHANGE-Zone verantwortlichen Router enthalten sind;
  • Bereich 1 - der Bereich, in dem die für die Arbeit der Unternehmensdienste verantwortlichen Router enthalten sind;
  • Bereich 2 - der Bereich, in dem die für das Routing-Management-Verkehr verantwortlichen Router enthalten sind;
  • Bereich N - Zweignetzbereiche.

Auf Grenzroutern wird es auf einem virtuellen Router (VRF-INTERNET) erstellt, auf dem die eBGP-Vollansicht mit dem entsprechenden zugewiesenen AS ausgelöst wird. Zwischen VRFs ist iBGP konfiguriert. Das Unternehmen verfügt über einen Pool weißer Adressen, die in diesen VRF-INTERNETs veröffentlicht werden. Einige der weißen Adressen werden direkt an FW-CLUSTER (Adressen, auf denen die Dienste des Unternehmens ausgeführt werden) weitergeleitet, andere über die EXCHANGE-Zone (interne Unternehmensdienste, für die externe IP-Adressen und externe NAT-Adressen für Büros erforderlich sind). Außerdem gelangt der Datenverkehr zu virtuellen Routern, die auf L3-CORE mit weißen und grauen Adressen (Sicherheitszonen) erstellt wurden.

Verwaltungsnetzwerke verwenden dedizierte Switches und sind ein physisch dediziertes Netzwerk. Das Verwaltungsnetzwerk ist auch in Sicherheitszonen unterteilt.
Der EMERGENCY-Router dupliziert den FW-CLUSTER physisch und logisch. Alle Schnittstellen sind deaktiviert, mit Ausnahme derjenigen, die sich mit dem Verwaltungsnetzwerk befassen.

Automatisierung und ihre Beschreibung


Wir haben herausgefunden, wie das Netzwerk funktioniert. Schauen wir uns nun die Schritte an, wie wir den Datenverkehr von FW-CLUSTER zu EMERGENCY übertragen können:

  1. Deaktivieren Sie die Schnittstellen am Kernel-Switch (L3-CORE), die ihn mit dem FW-CLUSTER verbinden.
  2. Deaktivieren Sie die Schnittstellen am L2-MGMT-Core-Switch, die ihn mit dem FW-CLUSTER verbinden.
  3. Konfigurieren Sie den NOT-Router (standardmäßig sind alle Schnittstellen außer den mit L2-MGMT verbundenen Schnittstellen deaktiviert):

  • Wir bieten Schnittstellen für NOTFÄLLE an.
  • Konfigurieren Sie die externe IP-Adresse (für NAT), die sich im FW-Cluster befand.
  • Wir generieren gARP-Anfragen, so dass sich in den L3-CORE-Arp-Tabellen die Mohnadressen von FW-Cluster zu NOT ändern.
  • BRD-01, BRD-02;
  • NAT;
  • EMERGENCY OSPF Area 1;
  • EMERGENCY OSPF Area 2;
  • Area 1 10;
  • Area 1 10;
  • ip-, L2-MGMT ( , FW-CLUSTER);
  • gARP , arp- L2-MGMT - FW-CLUSTER EMERGENCY.

Wir kehren wieder zur ursprünglichen Formulierung des Problems zurück. Drei Uhr morgens, großer Stress, ein Fehler in jedem Stadium kann zu neuen Problemen führen. Bereit, Befehle über die CLI einzugeben? Ja? Ok, spüle wenigstens dein Gesicht aus, trinke Kaffee und sammle deinen Willen in einer Faust.
Bruce, bitte hilf den Jungs.



Nun, wir reduzieren weiterhin unsere Automatisierung.
Unten finden Sie ein Diagramm der Arbeitsmappe in Bezug auf Ansible. Dieses Diagramm spiegelt das wider, was wir oben beschrieben haben, nur eine konkrete Implementierung in Ansible.


Zu diesem Zeitpunkt haben wir erkannt, was zu tun ist, ein Spielbuch entwickelt und Tests durchgeführt. Jetzt können wir es starten.

Ein weiterer kleiner Exkurs. Die Leichtigkeit des Erzählens sollte Sie nicht irreführen. Das Schreiben von Spielbüchern war nicht so einfach und schnell, wie es scheinen mag. Das Testen hat ziemlich viel Zeit in Anspruch genommen, ein virtueller Stand wurde erstellt, die Lösung wurde mehrmals gerollt, es wurden ungefähr 100 Tests durchgeführt.

Wir fangen an ... Es gibt das Gefühl, dass alles sehr langsam passiert, irgendwo liegt ein Fehler vor, am Ende wird etwas nicht funktionieren. Das Gefühl eines Fallschirmsprungs und der Fallschirm will sich nicht sofort öffnen ... das ist normal.

Als nächstes lesen wir das Ergebnis der Operationen des Ansible-Playbooks (wir haben die IP-Adressen aus Verschwörungsgründen ersetzt):

[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml 

PLAY [------->Emergency on VCF] ********************************************************

TASK [vcf_junos_emergency_on : Disable PROD interfaces to FW-CLUSTER] *********************
changed: [vcf]

PLAY [------->Emergency on MGMT-CORE] ************************************************

TASK [mgmt_junos_emergency_on : Disable MGMT interfaces to FW-CLUSTER] ******************
changed: [m9-03-sw-03-mgmt-core]

PLAY [------->Emergency on] ****************************************************

TASK [mk_routeros_emergency_on : Enable EXT-INTERNET interface] **************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Generate gARP for EXT-INTERNET interface] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable static default route to EXT-INTERNET] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change NAT rule to EXT-INTERNET interface] ****************
changed: [m9-04-r-04] => (item=12)
changed: [m9-04-r-04] => (item=14)
changed: [m9-04-r-04] => (item=15)
changed: [m9-04-r-04] => (item=16)
changed: [m9-04-r-04] => (item=17)

TASK [mk_routeros_emergency_on : Enable OSPF Area 1 PROD] ******************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable OSPF Area 2 MGMT] *****************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change OSPF Area 1 interfaces costs to 10] *****************
changed: [m9-04-r-04] => (item=VLAN-1001)
changed: [m9-04-r-04] => (item=VLAN-1002)
changed: [m9-04-r-04] => (item=VLAN-1003)
changed: [m9-04-r-04] => (item=VLAN-1004)
changed: [m9-04-r-04] => (item=VLAN-1005)
changed: [m9-04-r-04] => (item=VLAN-1006)
changed: [m9-04-r-04] => (item=VLAN-1007)
changed: [m9-04-r-04] => (item=VLAN-1008)
changed: [m9-04-r-04] => (item=VLAN-1009)
changed: [m9-04-r-04] => (item=VLAN-1010)
changed: [m9-04-r-04] => (item=VLAN-1011)
changed: [m9-04-r-04] => (item=VLAN-1012)
changed: [m9-04-r-04] => (item=VLAN-1013)
changed: [m9-04-r-04] => (item=VLAN-1100)

TASK [mk_routeros_emergency_on : Change OSPF area1 default cost for to 10] ******************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change MGMT interfaces ip addresses] ********************
changed: [m9-04-r-04] => (item={u'ip': u'..n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+14.254', u'name': u'VLAN-899'})

TASK [mk_routeros_emergency_on : Generate gARPs for MGMT interfaces] *********************
changed: [m9-04-r-04] => (item={u'ip': u'..n.254', u'name': u'VLAN-803'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+1.254', u'name': u'VLAN-805'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+2.254', u'name': u'VLAN-807'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+3.254', u'name': u'VLAN-809'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+4.254', u'name': u'VLAN-820'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+5.254', u'name': u'VLAN-822'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+6.254', u'name': u'VLAN-823'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+7.254', u'name': u'VLAN-824'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+8.254', u'name': u'VLAN-850'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+9.254', u'name': u'VLAN-851'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+10.254', u'name': u'VLAN-852'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+11.254', u'name': u'VLAN-853'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+12.254', u'name': u'VLAN-870'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+13.254', u'name': u'VLAN-898'})
changed: [m9-04-r-04] => (item={u'ip': u'..n+14.254', u'name': u'VLAN-899'})

PLAY RECAP ************************************************************************

Erledigt!

Vergessen Sie nicht die Konvergenz dynamischer Routing-Protokolle und das Laden einer großen Anzahl von Routen in die FIB. Wir können dies in keiner Weise beeinflussen. Wir warten. Es kam zusammen. Jetzt ist es fertig.

Und im Dorf Vilabaggio (das die Netzwerkeinrichtung nicht automatisieren will) spülen sie das Geschirr weiter. Bruce (wenn auch schon anders, aber nicht weniger cool) versucht herauszufinden, wie viel mehr man Geräte manuell neu konfigurieren kann.



Ich möchte auch auf einen wichtigen Punkt eingehen. Wie bekommen wir alles zurück? Nach einiger Zeit werden wir unseren FW-CLUSTER wieder zum Leben erwecken. Dies ist das Hauptgerät, nicht das Backup, das Netzwerk sollte daran arbeiten.

Lust auf Networker zu brennen? Der technische Direktor wird tausend Argumente hören, warum dies nicht notwendig ist, warum es später getan werden kann. Leider funktioniert das Netzwerk auf diese Weise aus einer Reihe von Patches, Stücken und Überresten früheren Luxus. Es stellt sich heraus, eine Steppdecke. Unsere Aufgabe als Ganzes, nicht in dieser speziellen Situation, sondern im Allgemeinen als IT-Spezialist, besteht im Prinzip darin, das Netzwerk auf das schöne englische Wort „Konsistenz“ zu bringen. Es ist sehr vielfältig und kann übersetzt werden als: Konsistenz, Konsistenz, Konsistenz, Kohärenz, Konsistenz, Vergleichbarkeit, Konnektivität. Das ist alles über ihn. Nur in diesem Zustand ist das Netzwerk überschaubar, wir verstehen klar, was und wie es funktioniert, wir verstehen klar, was geändert werden muss, wenn nötig, wir wissen klar, wo wir bei Problemen suchen müssen.Und nur in einem solchen Netzwerk können Sie Tricks wie die gerade beschriebenen ausführen.

Tatsächlich wurde ein anderes Spielbuch vorbereitet, das die Einstellungen auf ihren ursprünglichen Zustand zurückversetzte. Die Logik seiner Arbeit ist dieselbe (es ist wichtig, sich daran zu erinnern, dass die Reihenfolge der Aufgaben sehr wichtig ist). Um den bereits langen Artikel nicht zu erweitern, haben wir beschlossen, die Auflistung des Spielbuchs nicht zu veröffentlichen. Wenn Sie solche Übungen durchgeführt haben, werden Sie sich in Zukunft viel ruhiger und sicherer fühlen. Außerdem werden sich alle Krücken, die Sie dort angehäuft haben, sofort wiederfinden.

Jeder kann uns schreiben und den Quellcode des gesamten geschriebenen Codes zusammen mit allen Palybooks erhalten. Kontakte im Profil.

Ergebnisse


Prozesse, die automatisiert werden können, haben sich unserer Meinung nach noch nicht herauskristallisiert. Basierend auf dem, was uns begegnet ist und was unsere westlichen Kollegen diskutieren, sind die folgenden Themen immer noch sichtbar:

  • Gerätebereitstellung;
  • Datensammlung;
  • Berichterstattung
  • Fehlerbehebung;
  • Beachtung

Bei Interesse können wir die Diskussion zu einem der vorgegebenen Themen fortsetzen.

Ich möchte auch ein bisschen über Automatisierung spekulieren. Was soll es nach unserem Verständnis sein:

  • Das System muss ohne Menschen leben und gleichzeitig den Menschen verbessern. Das System sollte nicht von der Person abhängen;
  • Die Bedienung muss fachmännisch sein. Es gibt keine Klasse von Spezialisten, die Routineaufgaben ausführen. Es gibt Experten, die die gesamte Routine automatisiert haben und nur komplexe Probleme lösen.
  • Routine- \ Standardaufgaben werden automatisch "per Schaltfläche" erledigt, Ressourcen werden nicht verschwendet. Das Ergebnis solcher Aufgaben ist immer vorhersehbar und verständlich.


Und wozu sollten diese Punkte führen:

  • Transparenz der IT-Infrastruktur (weniger Betriebs-, Modernisierungs- und Implementierungsrisiken. Weniger Ausfallzeiten pro Jahr);
  • Die Fähigkeit, IT-Ressourcen zu planen (Kapazitätsplanungssystem - Sie können sehen, wie viel verbraucht wird, wie viel Ressourcen in einem einzelnen System benötigt werden und nicht durch Briefe und Besuche bei den obersten Abteilungen);
  • Möglichkeit, die Anzahl der IT-Mitarbeiter zu reduzieren.

Autoren des Artikels: Alexander Manov (CCIE RS, CCIE SP) und Pavel Kirillov. Wir sind daran interessiert, Lösungen zum Thema Automatisierung der IT-Infrastruktur zu diskutieren und vorzuschlagen.

All Articles